如何在 PowerShell 中執行 CMD 命令

許多舊版命令提示字元(CMD
)命令在 Windows PowerShell 腳本環境中運行。PowerShell 環境使用別名將這些命令從最常用的命令如 ping
到最具信息性的命令如 tracert
從舊環境中帶入。
然而,一些在命令提示字元終端中運行的命令在 Windows PowerShell 的腳本環境中將無法運行。本文將討論我們如何正確將它們轉錄到 Windows PowerShell。
使用 PowerShell 調用運算符 &
在多樣化的腳本世界中,PowerShell 以其能夠整合和執行來自其他腳本環境的命令(特別是命令提示字元(CMD
))而脫穎而出。實現這一點的最直接方法之一是通過調用運算符(&
)。
本文深入探討了在 PowerShell 中運行 CMD
命令時調用運算符的用法,這對於希望橋接 PowerShell 和傳統 CMD
腳本功能的人來說是一項非常寶貴的技能。
使用調用運算符的基本語法如下:
& <Command-String> <Arguments>
&
:這是調用運算符。<Command-String>
:這是你想執行的命令。可以是CMD
命令、PowerShell cmdlet 或腳本塊。<Arguments>
:這是可選的,表示命令所需的任何參數或參數。
示例代碼:
& cmd.exe /c echo "Hello from CMD"
在此腳本中,我們使用調用運算符 &
無縫執行 CMD
命令。首先,我們調用 cmd.exe
,即命令提示字元的指定可執行文件,以確保我們在正確的命令行環境中工作。
然後我們向 cmd.exe
傳遞 /c
參數,這是一個關鍵指令,用於指示命令提示字元執行我們指定的命令並隨後迅速終止。我們選擇的命令 echo "Hello from CMD"
是一個簡單但有效的示範,因為它僅僅將訊息 Hello from CMD
打印到控制台。
輸出:
這個輸出顯示 CMD
命令 echo
在 PowerShell 中成功執行,顯示預期的訊息。
使用 cmd.exe
運行 CMD
命令
另一個運行 CMD
命令的示例是使用 cmd.exe
。我們可以像以前的方法一樣在 Windows PowerShell 中添加 cmd.exe
。
添加並執行後,它將在 Windows PowerShell 命令提示字元中調用命令行界面。
在 PowerShell 中直接使用 cmd.exe
的語法如下:
cmd.exe /c "<Command-String>"
cmd.exe
:這是命令提示字元的可執行文件。/c
:這是一個參數,用於指示cmd.exe
執行由字符串指定的命令,然後終止。"<Command-String>"
:這是你希望執行的CMD
命令或命令序列。
示例代碼:
cmd.exe /c "echo Hello from CMD"
在這個腳本中,我們通過使用 /c
參數直接調用 cmd.exe
,將 CMD
功能無縫整合到 PowerShell 中,隨後是我們感興趣的命令 echo Hello from CMD
。通過使用 cmd.exe /c
,我們在 PowerShell 和 CMD
之間建立了一座橋樑,使我們能夠在 PowerShell 腳本中利用熟悉的命令行環境和 CMD
的功能。
命令 "echo Hello from CMD"
是這個整合的簡單但具體的示例,我們利用一個基本的 CMD
命令將我們希望的文本打印到控制台。
輸出:
這個輸出顯示了 CMD echo
命令在 PowerShell 中的成功執行,顯示消息 Hello from CMD
。
使用 PowerShell 對 CMD
進行管道傳輸
在 Windows PowerShell 中,我們還可以通過將 cmd
cmdlet 輸入到你想傳送的命令中,將命令發送到命令提示字元終端。
在 PowerShell 中對 CMD
進行管道傳輸主要用於在 PowerShell 上下文中執行 CMD
命令或批處理腳本。當你需要執行沒有直接 PowerShell 等效命令的 CMD
命令或處理舊版 CMD
腳本時,這種方法特別有用。
在 PowerShell 中向 CMD
管道傳輸的基本語法為:
"<Command-String>" | cmd.exe /c -
"<Command-String>"
:這是你希望執行的CMD
命令。|
:這是 PowerShell 管道運算符,將一個命令的輸出作為另一個命令的輸入。cmd.exe /c -
:這會調用命令提示字元以執行通過管道傳遞給它的命令。-
表示cmd.exe
應該從標準輸入(stdin
)讀取命令。
示例代碼:
"echo Hello from CMD" | cmd.exe
在這個示例中,我們使用管道技術將字符串 "echo Hello from CMD"
發送到 cmd.exe
,展示了 PowerShell 的管道能力與 CMD
的命令執行的優雅結合。
我們的過程始於 "echo Hello from CMD"
,這是一個簡單而有效的 CMD
命令,封裝為一個字符串,設計在 CMD
環境中執行時顯示特定消息。
然後我們使用管道運算符 |
,這是一個在 PowerShell 中的強大工具,將此命令字符串無縫地轉發到 cmd.exe
。這一過程的最終結果在 cmd.exe /c -
中可見,其中 -
符號發揮了關鍵作用,指示 cmd.exe
應仔細讀取並執行來自管道的命令。
輸出:
這個輸出是 CMD echo
命令的結果,將 Hello from CMD
打印到螢幕上。
使用 Invoke-Expression
在 PowerShell 中運行 CMD
命令
在 PowerShell 中執行 CMD
命令的一種靈活且強大的方法是通過 Invoke-Expression
cmdlet。當你需要動態構建和執行命令或腳本塊時,這種方法特別有用。
本文深入探討了在 PowerShell 中運行 CMD
命令時 Invoke-Expression
方法的目的、應用和用法。
Invoke-Expression
的語法為:
Invoke-Expression -Command "<Command-String>"
-Command
:這指定要執行的命令。此參數可以縮寫為-C
。"<Command-String>"
:這是包含要執行的命令的字符串。
示例代碼:
Invoke-Expression -Command "cmd.exe /c echo Hello from CMD"
在我們的腳本中,我們利用 Invoke-Expression
的強大功能巧妙地執行一個封裝在字符串中的 CMD
命令。過程始於 Invoke-Expression -Command
,這是一個關鍵的 cmdlet 和參數組合,使 PowerShell 能夠解析並執行提供的命令字符串。
然後我們引入 "cmd.exe /c echo Hello from CMD"
作為我們選擇的命令字符串。這個字符串巧妙地指示 cmd.exe
使用 /c
參數,這一指令命令 CMD
執行後續命令然後總結其過程。
echo
命令位於這個字符串之中,是我們執行的核心,旨在在 CMD
中輸出 Hello from CMD
。
輸出:
這個輸出是 echo
命令被 CMD
處理的直接結果,這是在 PowerShell 中通過 Invoke-Expression
被調用的。
結論
在這篇全面的探索中,我們深入研究了在 Windows PowerShell 環境中運行命令提示字元(CMD
)命令的多樣性,涵蓋了四種不同的方法:直接的調用運算符 &
,直接使用 cmd.exe
,創新的將命令管道傳輸到 CMD
的技術,以及動態的 Invoke-Expression
cmdlet。每種方法都有其獨特的優勢,將 CMD
的熟悉功能整合到 PowerShell 的高級腳本領域中。
對於希望進一步提升 PowerShell 專業知識的人來說,深入研究如創建自訂 PowerShell Cmdlets 或高級 PowerShell 腳本技術等高級主題是高度建議的,這將開啟通往更複雜和健壯的腳本解決方案的大門,這些解決方案和諧地融合了 PowerShell 和 CMD
的優勢。
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn