Windows:命令中的空格

我试图执行一个简单的命令与包含空格的path

$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' 

试试这个方法。 没有空格,所以path应该没问题。

也许尝试使用Call运算符( & )而不是invoke-expression? 我不知道如何处理任何输出。

 $solution = "test.sln" $msbuild = "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" Exec { & $msbuild $solution /t:clean} Exec { & $msbuild $solution }