簡體   English   中英

立即啟動 powershell 和命令

[英]launch powershell and commands at once

如果我在 powershell 中執行此操作:

echo beep ; echo beep

它打印:

beep
beep

但如果我在常規控制台中執行此操作:

powershell -command { echo beep ; echo beep }

它打印:

echo beep ; echo beep

獲得相同結果的正確語法是什么?

腳本塊( { ... } ) 內的命令列表傳遞給powershell -Commandpowershell -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 中echoWrite-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM