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」標誌不能把它和輸出目錄之間的空間......
謝謝。對我有效的更新是&sz x $ argument_0「-o $ argument_1」 – larryq
&符號不會導致行爲「更接近cmd」。它僅僅向powershell表明即將到來的*字符串*應該被解釋爲*命令*。這允許用戶通過具有空格或特殊字符的完整路徑來調用可執行文件或腳本。對其餘的參數沒有影響。 – latkin
修復只是爲了獲得逃脫權利。最後一個參數只需要加上'「-o $ argument_1」',因爲雙引號允許變量擴展。完整的命令可以是'sz x $ argument_0「-o $ argument_1」' – latkin