我有一个简单的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不要逃避最后的双引号?
感谢您的时间,并教育我。
答案 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)
您是否尝试在调用中单引引用您的参数?