如何在使用局部变量作为参数的远程计算机上执行脚本块

时间:2011-10-12 19:17:55

标签: powershell remoting invoke-command

我想运行一个从远程机器传递参数的应用程序。通过在本地运行远程计算机,我有以下工作:

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>)

我尝试了很多组合,我无法运行它。

1 个答案:

答案 0 :(得分:1)

你可以这样做:

$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
}