在 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.