2010-01-12 102 views
1

我想其中一個參數是引用從PowerShell中調用一個perl腳本:如何在Powershell中將引用的參數提供給perl?

myProg -root="my path with spaces" 

我試着使用-root='"my path with spaces"'-root='my path with spaces'-root=\"my path with spaces\",但似乎沒有任何工作。按<ENTER>後,我看到>>作爲提示。

如何在Powershell的命令行上傳遞此引用的參數?

回答

2

嘗試把整個參數在引號和逃脫內報價,這樣的PowerShell不會嘗試分析它:

myProg '-root=\"my path with spaces\"' 
0

我解決了類似的問題與

Invoke-Expression '&.\myProg.exe `-u:IMP `-p: `-s:"my path with spaces"' 

希望這幫助。

1

明確表示每個命令行參數可能很有用。不要依賴解析器來確定通過空白參數是什麼,而是顯式地創建一個字符串數組,每個命令行參數一個項目。

$cmdArgs = @(` 
    '-root="my path with spaces"', ` 
    'etc', ` 
    'etc') 

& "C:\etc\myprog.exe" $cmdArgs 
0

我試圖用PowerShell來傳遞參數用空格的可執行文件時遇到了類似的問題。最後,我發現,我能得到一個報價參數由三逃脫的說法收盤雙引號使用調用,表達時通過:

iex "&`"C:\Program Files\Vendor\program.exe`" -i -pkg=`"Super Upgrade```" -usr=User -pwd=password2" 

什麼是看不出來的。這就是爲什麼我可以使用單個back-tick字符來逃避可執行文件,而我必須使用3個back-ticks來完成引用的參數。我所知道的是,這是唯一對我有用的解決方案。

相關問題