Я пытаюсь выполнить простую команду с путем, содержащим пробелы
$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'
Попробуй сюда. Пробел нет, так что путь должен быть в порядке.
Возможно, попробуйте использовать оператор Call ( &) вместо вызывающего выражения? Хотя я не уверен, как будет обрабатываться любой вывод.
$solution = "test.sln"
$msbuild = "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe"
Exec { & $msbuild $solution /t:clean}
Exec { & $msbuild $solution }