Я только что протестировал это на PowerShell v1.0. Настройка выполняется следующим образом:
Id CommandLine
-- -----------
1 $msbuild = "C:\Windows\Microsoft.NET\Framework\v3.5\msbuild.exe"
4 $a = "C:\some\project\or\other\src\Solution.sln /target:Clean /target:Build"
.
Эта строка выходит из строя с неинтуитивным сообщением об ошибке:
Id CommandLine
-- -----------
5 & $msbuild $a
.
Эта строка терпит неудачу, потому что и ожидает, что первым аргументом будет сама команда.
Id CommandLine
-- -----------
10 & "$msbuild $a"
.
Эта строка работает:
Id CommandLine
-- -----------
16 cmd /c "$msbuild $a"
.
Пожалуйста, объясните. Меня больше интересует, почему синтаксис не работает, чем способ обхода MSBuild.