リモートマシンで展開を実行するための汎用のPowerShellスクリプトを作成しています。オーバーランできない1つの問題が発生しました。この問題は、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
パッケージの周りに引用符なし-1つ-everythigを台無しにする外部
私は多くのソリューションをテストしましたが、どれも機能しなかったため、この問題をオーバーランする方法。
よろしくお願いします!