1

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

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

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

4

1 回答 1

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
}
于 2011-10-12T19:25:27.040 回答