Как выполнить блок скрипта на удаленном компьютере, который использует локальную переменную в качестве аргумента - PullRequest
1 голос
/ 12 октября 2011

Я хотел бы запустить приложение, передав ему аргументы с удаленной машины. У меня есть следующие для работы на удаленном компьютере, запустив его локально:

foreach ($a in $args){
    &"c:\Program Files\ChristianSteven\CRD\crd.exe" "-s schedulename=Vc_$($a)"
}

У меня проблемы с его удаленным использованием:

foreach ($a in $args){     
    Invoke-Command -computername $serv -Credential $cred -ScriptBlock {param($b) &"c:\Program Files\ChristianSteven\CRD\crd.exe" $b} -ArgumentList "-s schedulename=Vc_$($a)"
}

Из того, что я прочитал, это связано с областью действия переменных, и решение этой проблемы заключается в создании блока сценария перед его передачей на удаленный компьютер с помощью:

[scriptblock]::create(<command>)

Я перепробовал много комбинаций и не могу заставить его работать. * * 1010

1 Ответ

1 голос
/ 12 октября 2011

Вы можете сделать это так:

$scriptBlock = {param($a) &"c:\Program Files\ChristianSteven\CRD\crd.exe" "-s schedulename=Vc_$($a)"}
foreach ($a in $args){     
    Invoke-Command -computername $serv -Credential $cred -ScriptBlock $scriptBlock -ArgumentList $a
}
...