Я пытаюсь выполнить простую команду с путем, содержащим пробелы
$solution = "test.sln"
$msbuild = "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe"
Exec { iex "$msbuild `"$solution`" /t:clean"}
Exec { iex "$msbuild `"$solution`"" }
Это вызывает ошибку
Exception: The term 'x86' is not recognized as the name
что, кажется, потому что $msbuild
команда неправильно цитируется. Пытался процитировать команду (и избежать кавычек обратными кавычками), но все равно не повезло
$msbuild = "`"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe`""
Как правильно убежать / процитировать выше? Каковы правила экранирования в Powershell?
$msbuild = "${env:ProgramFiles(x86)}" + '\MSBuild\14.0\Bin\MSBuild.exe'
Попробуйте так. Пробелов нет, путь должен быть в порядке.
Возможно, попробуйте использовать Вызов оператор (&) вместо invoke-выражения? Я не уверен, как будет обрабатываться какой-либо вывод.
$solution = "test.sln"
$msbuild = "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe"
Exec { & $msbuild $solution /t:clean}
Exec { & $msbuild $solution }