在 PowerShell 中執行帶引數的 exe 檔案
exe
檔案型別包含可以在 Windows 環境中執行的程式/應用程式。副檔名 EXE
是可執行檔案的縮寫形式。
當你雙擊 .exe
檔案時,它將執行一些程式/應用程式。相同的 .exe
檔案也可以通過 Windows PowerShell 執行。
本文只關注執行帶引數的 exe
檔案,因為如果它已經在 Windows PATH
中,則正常的 exe
檔案執行(不帶引數)非常簡單。
在 PowerShell 中執行 exe
檔案的方法
這裡有兩種情況需要解決。
exe
檔案路徑已經在 WindowsPATH
中,並且命令名不包含任何空格。exe
檔案路徑不在 WindowsPATH
中,命令名或引數中包含空格。
對於第一種情況,呼叫帶有引數/引數的 exe
檔案非常簡單。語法如下所示。
<abc.exe> [/parameter1 /parameter2...]
OR
<abc.exe> [-host "host.org" -u "username" -p "password"]
abc.exe
- 可執行檔名/parameter1 /parameter2
- 任何數量的引數都可以包含在/
中並用空格分隔。-host "host.org" -u "username" -p "password"
- 命名引數可以這樣傳遞。
例子:
yourexecutable.exe /parameter1 /parameter2
OR
yourexecutable.exe -host "host.org" -u "username" -p "password"
同時,在第二種情況下,exe
檔案路徑不在 Windows PATH
中。因此,你應該明確給出 exe
檔案/命令的完整路徑。
如果路徑包含空格,則必須將其括在引號內(如下所示)。
'C:\Program Files (x86)\Windows Media Player\wmplayer.exe'
當 PowerShell 看到這種以字串開頭的命令時,它會將命令評估為字串並回顯到命令視窗。
C:\Program Files (x86)\Windows Media Player\wmplayer.exe
這不是預期的輸出。因此,要讓 PowerShell 將此字串解釋為命令名稱,你需要使用稱為呼叫運算子 (&
) 的特殊運算子。我們也稱其為呼叫運算子。
PowerShell 中的呼叫運算子 (&
)
呼叫運算子 (&
) 可以新增到命令名稱之前。它將使 PowerShell 將呼叫運算子 (&
) 旁邊的字串解釋為命令名稱。
& 'C:\Program Files (x86)\Windows Media Player\wmplayer.exe'
這將成功開啟 Windows Media Player。
在 PowerShell 中使用呼叫運算子 (&
) 傳遞引數
你可以使用呼叫運算子 (&
) 輕鬆地將引數/引數傳遞給命令。
& 'C:\Program Files (x86)\Windows Media Player\wmplayer.exe' "D:\music videos\video.mp4" /fullscreen
在上面的命令中:
'C:\Program Files (x86)\Windows Media Player\wmplayer.exe'
是命令名稱。"D:\videos\funny videos\ video.avi"
是傳遞給上述命令的第一個引數。/fullscreen
- 傳遞給命令的另一個引數。
當你需要傳遞多個引數/引數時,有更簡潔的方法來執行此類命令。
方法一:
將每個引數/引數分配給一個變數並重複使用,這樣做更乾淨,也更容易維護。
$cmd = 'C:\Program Files (x86)\Windows Media Player\wmplayer.exe'
$arg1 = 'D:\music videos\video.mp4'
& $cmd $arg1 /fullscreen
方法二:
還有另一種將引數/引數作為一個單元傳遞給命令的方法,稱為 splatting。
$cmd = 'C:\Program Files (x86)\Windows Media Player\wmplayer.exe'
$allargs = @('D:\music videos\video.mp4', 'anotherargument', 'nextargument')
& $cmd $allargs /fullscreen
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.