Powershell和作为参数的路径是双引号分隔的

时间:2012-02-16 19:49:43

标签: powershell powershell-v2.0

我有一个简单的PS脚本需要接受恰好是目录路径的参数。我把这条路径交给我并按如下方式调用ps脚本:

powershell.exe -ExecutionPolicy Bypass -F "C:\temp\ctest\logging test\postinstall.ps1" "C:\temp\ctest\logging test\"

我无法控制将'\'添加到作为此脚本的参数的路径,并且必须使用双引号来说明路径中的空间。所以,我最终得到的是我的ps脚本中的一个变量,即字符串:

C:\temp\ctest\logging test"     <<-- error in path!  with the double-quote char. :(

我的问题很简单,我希望,但我无法找到任何解决它的人。在这种情况下,有没有办法告诉powershell不要逃避最后的双引号?

感谢您的时间,并教育我。

3 个答案:

答案 0 :(得分:3)

该问题仅在从CMD调用时才会出现。在您的脚本中,您可以这样做:

$args[0].TrimEnd('"')

如果存在双引号,它将删除尾随双引号。

或者你可以加倍反斜杠:

C:\>powershell.exe -f C:\echo.ps1 "C:\temp\ctest\logging test\\"

echo.ps1的内容

Write-Host ('"{0}"' -f $args[0])

答案 1 :(得分:0)

尝试这样:

powershell.exe -ExecutionPolicy Bypass -F 'C:\temp\ctest\logging test\postinstall.ps1' 'C:\temp\ctest\logging test\'

答案 2 :(得分:0)

您是否尝试在调用中单引引用您的参数?