2012-09-10 97 views
4

我打電話給一個來自powershell的zip實用程序,並且很難得到其參數。代碼如下:從powershell腳本調用可執行文件(帶參數)

if (-not (test-path "C:\Program Files (x86)\7-Zip\7z.exe")) {throw "C:\Program Files (x86)\7-Zip\7z.exe needed"} 
    set-alias sz "C:\Program Files (x86)\7-Zip\7z.exe" 

    $argument_1 = "c:\temp\DeployTemp\" 
    $argument_0 = "c:\temp\Release\Web_Feature_2012R10_1_1112.prod.com.zip" 

    sz x $argument_0 -o$argument_1 

問題是7zip可執行調用字面提取到名爲$ argument_1的目錄,而不是存儲在字符串中的實際值。我試過用幾種方式逃避價值,但沒有運氣。不幸的是,7zip的「O」標誌不能把它和輸出目錄之間的空間......

回答

5

嘗試是這樣的:

& "$sz" x $argument_0 "-o$argument_1" 

的符號告訴PowerShell來對待表達更像CMD .exe會,但仍然允許變量擴展(以$開頭的令牌)。

+1

謝謝。對我有效的更新是&sz x $ argument_0「-o $ argument_1」 – larryq

+2

&符號不會導致行爲「更接近cmd」。它僅僅向powershell表明即將到來的*字符串*應該被解釋爲*命令*。這允許用戶通過具有空格或特殊字符的完整路徑來調用可執行文件或腳本。對其餘的參數沒有影響。 – latkin

+1

修復只是爲了獲得逃脫權利。最後一個參數只需要加上'「-o $ argument_1」',因爲雙引號允許變量擴展。完整的命令可以是'sz x $ argument_0「-o $ argument_1」' – latkin

相關問題