如何在 PowerShell 中執行 CMD 命令

  1. 使用 PowerShell 調用運算符 &
  2. 使用 cmd.exe 運行 CMD 命令
  3. 使用 PowerShell 對 CMD 進行管道傳輸
  4. 結論
We’ve created a detailed YouTube video to accompany this article, embedded below!
如何在 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 打印到控制台。

輸出:

在 PowerShell 中運行 cmd 命令 - 輸出 1

這個輸出顯示 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 命令將我們希望的文本打印到控制台。

輸出:

在 PowerShell 中運行 cmd 命令 - 輸出 2

這個輸出顯示了 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 應仔細讀取並執行來自管道的命令。

輸出:

在 PowerShell 中運行 cmd 命令 - 輸出 3

這個輸出是 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

輸出:

在 PowerShell 中運行 cmd 命令 - 輸出 4

這個輸出是 echo 命令被 CMD 處理的直接結果,這是在 PowerShell 中通過 Invoke-Expression 被調用的。

結論

在這篇全面的探索中,我們深入研究了在 Windows PowerShell 環境中運行命令提示字元(CMD)命令的多樣性,涵蓋了四種不同的方法:直接的調用運算符 &,直接使用 cmd.exe,創新的將命令管道傳輸到 CMD 的技術,以及動態的 Invoke-Expression cmdlet。每種方法都有其獨特的優勢,將 CMD 的熟悉功能整合到 PowerShell 的高級腳本領域中。

對於希望進一步提升 PowerShell 專業知識的人來說,深入研究如創建自訂 PowerShell Cmdlets 或高級 PowerShell 腳本技術等高級主題是高度建議的,這將開啟通往更複雜和健壯的腳本解決方案的大門,這些解決方案和諧地融合了 PowerShell 和 CMD 的優勢。

Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn