2012-02-16 62 views
7

我有一个简单的PS脚本,需要接受恰好是目录路径的参数。我得到这个路径递给我,并调用PS脚本如下:Powershell和作为双引号分隔的参数的路径

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

这个问题看起来只有在从CMD调用时才会出现。在你的脚本中,你可以这样做:

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

它会删除尾随的双引号(如果存在)。

或者你可以加倍反斜杠:加工 - 文件 '' C:\ TEMP \ CTEST \日志echo.ps1

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

尝试这样的:

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

从PS与立即返回

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

内容test \ postinstall.ps1'失败:不支持给定路径的格式。指定-File参数的有效路径。 – joebalt 2012-02-16 20:01:05

+0

- 编辑:忘了双引号... – 2012-02-16 20:01:41

+0

单引号一切产生:处理文件''C:\ Temp \ ctest \ logging test \ postinstall.ps1''失败:不支持给定路径的格式。指定-File参数的有效路径。 – joebalt 2012-02-16 21:41:15

0

您是否尝试过单引号你的说法在你调用?

+0

当我们尝试在ps脚本内对该参数执行dir命令时,将参数单引号引用到ps1脚本会产生错误:Get-ChildItem:找不到驱动器。名称为“C”的驱动器不存在。 – joebalt 2012-02-16 21:36:27