在 PowerShell 中執行 CMD 命令
許多舊的命令提示符 (CMD) 命令在 Windows PowerShell 指令碼環境中工作。PowerShell 環境使用別名將這些命令從最常用的命令(如 ping
)轉發到使用別名的遺留環境中的資訊最多的命令(如 tracert
)。
但是,命令提示符終端中的某些正在執行的命令在 Windows PowerShell 的指令碼環境中不起作用。本文將討論如何將它們正確轉錄到 Windows PowerShell。
使用 PowerShell 呼叫運算子 &
當我們使用位於特定路徑的可執行檔案格式 (.exe) 執行命令列程式時,舊版 CMD 將成功執行,然後是實際命令。
如果我們採用下面的示例語法,如果我們在 CMD 中執行指令碼,我們可以使用 Avast 命令列掃描器執行快速掃描,它會成功執行。
示例程式碼:
"C:\Program Files\AVAST Software\Avast\ashCmd.exe" /Quick
但是,如果我們採用相同的語法並在 Windows PowerShell 中執行它,我們將得到一個異常錯誤。錯誤背後的原因是 Windows PowerShell 將雙引號 ""
視為文字字串值,並且語法中隨附的 /Quick
引數在任何本機庫中均不可用。
此外,在 Windows PowerShell 中僅執行帶引號的路徑將僅輸出字串值,而不是執行可執行檔案本身。
示例程式碼:
"C:\Program Files\AVAST Software\Avast\ashCmd.exe"
輸出:
C:\Program Files\AVAST Software\Avast\ashCmd.exe
為了解決這個問題,我們可以在命令列開頭呼叫 Invocation 運算子或 & 符號&
以在 Windows PowerShell 中正確執行可執行路徑。
& "C:\Program Files\AVAST Software\Avast\ashCmd.exe" /Quick
在 PowerShell 環境中使用呼叫運算子會將字串路徑視為可執行檔案的實際路徑。因此,它將使用隨附的命令引數直接執行指令碼。
使用 cmd.exe
執行 CMD 命令
執行 CMD 命令的另一個示例是使用 cmd.exe
。我們可以像之前的方法一樣在 Windows PowerShell 中新增 cmd.exe
。
新增並執行後,它將呼叫 Windows PowerShell 命令提示符內的命令列介面。
cmd.exe /c where python
引數/c
將執行輸入的任何命令並終止 cmd.exe
命令列直譯器。
你可以執行以下語法來調出 cmd.exe
命令的幫助文件以獲取有關其他引數的更多資訊。此外,你可以在 PowerShell 和 CMD 命令列介面上執行以下命令。
cmd.exe /?
使用 PowerShell 管道連線到 CMD
在 Windows PowerShell 中,我們還可以通過將 cmd
cmdlet 中的管道傳遞到你要傳送的命令來將命令傳送到命令提示符終端。
在下面的示例語法中,查詢本地計算機 IP 配置的請求被髮送到 CMD 命令列介面。執行程式碼後,CMD 終端被終止,使用者被帶回 PowerShell 終端,在行首用 PS
表示。
示例程式碼:
"Ipconfig /all" | cmd
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn