1

我需要从本地脚本在远程机器上执行 Powershell 脚本。问题是,直到运行时我才知道远程脚本的路径或文件名。

我在本地脚本中尝试了以下行:

Invoke-Command -ComputerName $TargetServer -ScriptBlock { & ($TargetMSI) '$MSI' 'C:\Program Files (x86)\Vasanta.Int.MIS' 'Dev' }

问题是这会返回错误:管道元素中“&”之后的表达式产生了一个无效对象。

如果将 $TargetMSI 替换为硬编码的字符串文字,那么它可以正常工作。

谁能告诉我我需要改变什么?

4

1 回答 1

2

当您在 v2 中调用命令时,没有直接的方法将变量传递给脚本块。您需要在脚本块组合中使用 -ArgumentList + param () :

Invoke-Command -ScriptBlock { param ($TargetMSI, $MSI) & $TargetMSI '$MSI' } -ArgumentList $TargetMSI, $MSI

这是在 v3 中使用 $using:localvariable 语法修复/改进的。

于 2012-07-31T10:49:05.377 回答