我试图执行一个简单的命令与包含空格的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 }