как передать параметры командной строки в вызванный сеанс в powershell 2.0

Как я могу передать параметры командной строки в сеанс, который вызывается с помощью «invoke-command» в powershell 2.0

мой сценарий:

param(
    [string]$hostname = 'my_server_name'
)

function createSession($hostname){
    return New-PSSession -ComputerName $hostname -Credential $env:UserDomain\$env:UserName
}
$session = createSession $hostname
invoke-command -Session $session -ScriptBlock {
   write-host $hostname
   write-host $using:hostname
   write-host $script:hostname 
   write-host '**test text**'

}
    Exit-PSSession

Вывод: (я получаю пустую строку, если я печатаю значение параметра напрямую.)

**test text**

person Siva Dasari    schedule 26.06.2017    source источник
comment
Кроме того, вы можете ссылаться на переменные из родительского сеанса как таковые: $using:hostname. Я почти уверен, что это совместимо с PSv2.   -  person TheMadTechnician    schedule 27.06.2017
comment
Я пробовал -ArgumentList & $using options. но ни один из них не работал.   -  person Siva Dasari    schedule 27.06.2017


Ответы (2)


использовать блок параметров

$hostname = $env:computername
Invoke-Command -ScriptBlock { param($hostname)
    Write-OutPut $hostname
} -ArgumentList $hostname
person Prasoon Karunan V    schedule 28.06.2017

param(
    [string]$hostname = 'my_server_name'
)

function createSession($hostname){
    return New-PSSession -ComputerName $hostname -Credential $env:UserDomain\$env:UserName
}
$session = createSession $hostname
invoke-command -Session $session -ScriptBlock {
$hostname=$using:hostname

or

$hostname=$script:hostname
   write-host $hostname
   write-host '**test text**'

}
    Exit-PSSession

Надеюсь, что что-то из вышеперечисленного поможет. Если нет, посмотрите на концепцию области видимости переменных в powershell. Возможно, они помогут Область действия переменных Powershell

person Chetan Kulkarni    schedule 27.06.2017