我正在尝试执行一个包含空格的路径的简单命令
$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 中的转义规则是什么?
答案1
$msbuild = "${env:ProgramFiles(x86)}" + '\MSBuild\14.0\Bin\MSBuild.exe'
试试这个方法。没有空格,所以路径应该没问题。
答案2
也许尝试使用称呼操作员 (&) 而不是invoke-expression?但我不确定输出会被如何处理。
$solution = "test.sln"
$msbuild = "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe"
Exec { & $msbuild $solution /t:clean}
Exec { & $msbuild $solution }