我正在编写通用的 powershell 脚本来在远程机器上执行部署。我遇到了一个不能超限的问题,这个问题是 ArgumentList 传递的 Scriptblock 中带双引号的参数
我有这样的事情:
$remoteAddress = "some-pc"
$deploymentCommand = "D:\some path\Command.exe"
$deploymentPackages = @(`"“package - one - external"`", `"“package - two - external"`", `"“package - three - internal"`")
foreach ($deploymentPackage in $deploymentPackages)
{
invoke-command -ComputerName $remoteAddress -ScriptBlock { param ($deployCmd, $deployPackage) & $deployCmd -package:$deployPackage -action:doit } -ArgumentList $deploymentCommand,$deploymentPackage
}
我在 $deploymentPackages 中添加了双引号。而且我仍然像这样远程执行我的命令(当然失败了):
D:\some path\Command.exe -package:package - one - external -action:doit
D:\some path\Command.exe -package:package - two - external -action:doit
D:\some path\Command.exe -package:package - three - external -action:doit
而正确的执行路径应该是:
D:\some path\Command.exe -package:"package - three - external" -action:doit
包装周围没有引号 - 一 - 外部搞砸了一切
如何解决这个问题,因为我已经测试了许多解决方案,但没有一个有效。
提前感谢您的帮助!