在命令提示符中執行 PowerShell 命令

Marion Paul Kenneth Mendoza 2023年1月30日
  1. 在 PowerShell 中使用呼叫運算子 &
  2. 在 PowerShell 中的命令提示符內執行 PowerShell.exe
  3. 在 PowerShell 中執行 cmd.exe
在命令提示符中執行 PowerShell 命令

許多舊的命令提示符命令在 PowerShell 指令碼環境中工作。Windows PowerShell 環境使用別名從舊環境中傳遞這些命令。

但是,命令提示符終端中的某些命令在 Windows PowerShell 的指令碼環境中不起作用,反之亦然。

本文將討論在這兩種直譯器中執行 PowerShell 和遺留命令。

在 PowerShell 中使用呼叫運算子 &

當我們執行命令列程式時,舊的命令提示符命令將成功執行。

如果我們採用下面的示例語法,在 CMD 中執行它,它將成功執行。

"C:\temp\setup.exe" /s /qn

但是,如果我們使用上面的相同程式碼段並在 Windows PowerShell 中執行它,我們將收到一個異常錯誤。

錯誤背後的原因是 PowerShell 將雙引號 "" 視為文字字串值。語法中附帶的引數在任何 PowerShell 本機庫中都不存在。

此外,在 PowerShell 中只執行帶引號的路徑只會輸出字串值,而不是執行可執行檔案本身。

"C:\temp\setup.exe"

輸出:

C:\temp\setup.exe

為了解決這個問題,我們可以呼叫命令列開頭的 & 符號所代表的 Invocation 運算子來正確執行 Windows PowerShell 中的可執行路徑。

& "C:\temp\setup.exe" /s /qn

Windows PowerShell 中的呼叫運算子& 會將字串路徑視為可執行檔案的文字路徑。

因此,它將使用隨附的命令引數直接執行指令碼。

在 PowerShell 中的命令提示符內執行 PowerShell.exe

在這種方法中,我們將扭轉局面。我們現在將嘗試在命令提示符介面中執行 PowerShell 命令。

例如,如果我們在命令提示符中執行上述程式碼段,指令碼直譯器將無法正確讀取引數。為了解決這個問題,我們可以用單引號'' 將整個語法括起來。

powershell.exe -noexit "& '"C:\temp\setup.exe" /s /qn"

上例中的 -noexit 引數在命令提示符內執行 cmd 指令碼後不會退出 PowerShell 會話。

我們可以執行下面的程式碼片段來調出 powershell.exe 命令的幫助文件,以獲取有關其他函式和引數的更多資訊。

powershell.exe /?

在 PowerShell 中執行 cmd.exe

在 PowerShell 中執行 CMD 命令的另一個示例是呼叫 cmd.exe 應用程式。

新增並執行後,PowerShell 將在 Windows PowerShell 命令提示符內呼叫命令列介面會話。

cmd.exe /c "C:\temp\setup.exe" /s /qn

/c 引數將執行命令列介面中引數後跟的任何命令。

在上面的示例中,表示式 "C:\temp\setup.exe" /s /qn 將在 cmd.exe 中執行,因為命令在 /c 開關引數之後。

我們可以執行下面的程式碼片段來調出 cmd.exe 命令的幫助文件,以獲取有關其他函式和引數的更多資訊。

此外,我們可以在 PowerShell 和 CMD 命令列直譯器上執行以下命令。

cmd.exe /?
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

相關文章 - PowerShell Command