[英]launch powershell and commands at once
如果我在 powershell 中執行此操作:
echo beep ; echo beep
它打印:
beep
beep
但如果我在常規控制台中執行此操作:
powershell -command { echo beep ; echo beep }
它打印:
echo beep ; echo beep
獲得相同結果的正確語法是什么?
將腳本塊( { ... }
) 內的命令列表傳遞給powershell -Command
以按powershell -Command
執行僅在 PowerShell 內部支持,因為運行powershell -h
會告訴您。
從 PowerShell外部,只需按原樣傳遞命令,但最好在雙引號內,以防止cmd.exe
對參數進行意外的預先解釋:
powershell -command "echo beep ; echo beep"
但是請注意, cmd.exe
風格的環境變量引用(例如, %USER%
)仍然是預先擴展的。
或者,您可以傳遞一個以&
開頭的腳本塊(字符串) [1] ,調用運算符以確保腳本塊的執行,但僅當您想將參數傳遞給腳本塊時才需要這樣做:
powershell -command "& { echo $Args[0]; echo $Args[0] } beep"
beep
作為第一個參數傳遞,腳本塊將其引用為$Args[0]
。
順便說一句:在 PowerShell 中echo
是Write-Output
的別名,它寫入成功輸出流; 來自未捕獲或重定向隱含任何命令或表達式的輸出變為輸出流,以便使用echo
/ Write-Output
通常是不必要的:
powershell -command "& { $Args[0]; $Args[0] } beep"
[1] 從 PowerShell內部,將腳本塊傳遞給powershell -command
會導致調用PowerShell 會話識別它並將包含的命令視為要傳遞給新會話執行的命令。
在 PowerShell外部, {...}
是傳遞給新會話的字符串,然后新會話將該字符串解析為 PowerShell 代碼。 單獨評估腳本塊,無需通過&
(或.
)顯式調用,只需輸出腳本塊的文字內容,這解釋了您的輸出; 您可以通過提交來驗證此行為{ echo beep; echo beep }
{ echo beep; echo beep }
在 PowerShell 提示符下。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.