2012-02-16 61 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