在命令提示符中執行 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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn