Я пишу generic powershell script для развертывания на удаленных компьютерах. Я столкнулся с одной проблемой, которую я не могу перехватить, и эта проблема связана с параметрами с двойными кавычками в Scriptblock, переданными ArgumentList
У меня есть что-то вроде этого:
$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
без кавычек вокруг пакета - один - внешний, который испортил everythig
Как перехватить эту проблему, потому что я тестировал количество решений и не работал.
Спасибо за помощь заранее!