[英]How do I pass a quoted string as an argument to an executable in powershell?
[英]How do I feed a quoted argument to perl in Powershell?
我想從引用了參數的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的命令行中傳遞此引用的參數?
嘗試將整個參數放在引號中並轉義內部引號,這樣powershell將不會嘗試解析它:
myProg '-root=\"my path with spaces\"'
明確表示每個命令行參數可能很有用。 不必依賴解析器通過空格來弄清楚參數是什么,而是顯式創建一個字符串數組,每個命令行參數一個項。
$cmdArgs = @( `
'-root="my path with spaces"', `
'etc', `
'etc')
& "C:\etc\myprog.exe" $cmdArgs
嘗試使用Powershell將帶有空格的參數傳遞給可執行文件時,我遇到了類似的問題。 最后,我發現使用Invoke-Expression時,可以通過對參數的右雙引號進行三重轉義來獲得帶引號的參數:
iex "&`"C:\Program Files\Vendor\program.exe`" -i -pkg=`"Super Upgrade```" -usr=User -pwd=password2"
不清楚的是為什么我可以使用單個反引號字符來轉義可執行文件,而必須使用3個反引號來完成引號參數。 我所知道的是,這是唯一對我有用的解決方案。
我解決了類似的問題
Invoke-Expression '&.\myProg.exe `-u:IMP `-p: `-s:"my path with spaces"'
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.