如何 运行 EXE in powershell with parameters, in one line
How to run EXE in powershell with parameters, in one line
我需要 运行 一个带参数的 .exe,目前这需要两行。我希望能够将字符串作为变量传递给函数,并且只需要这样做一次。
这就是我目前的做法,需要两个变量:
function Foo{
$ExeToStart = "C:\Program Files\x\program.exe"
Start-Process $ExeToStart -ArgumentList "--arg1","--arg2"
}
有没有一种方法可以将它结合起来,这样我就可以只定义一个变量“y”并将其作为类似于下面的一行传递给函数?
$x = "C:\Program Files\x\program.exe -ArgumentList "--arg1","--arg2""
function Foo{
Start-Process $x
}
这里有一个方法可以实现你想要的。
# Create an array of the program and arguments
$x = 'C:\Program Files\x\program.exe','--arg1','--arg2'
# Example with no parameters
Function Foo {
Start-Process -FilePath $args[0][0] -ArgumentList $args[0][1..$args[0].Count]
}
# Example using parmeters
Function Foo {
param([string[]]$program)
$params = @{
FilePath = $program[0]
}
if ($program.Count -gt 1) {
$params['ArgumentList'] = $program[1..$program.Count]
}
Start-Process @Params
}
# Call the function
Foo $x
我需要 运行 一个带参数的 .exe,目前这需要两行。我希望能够将字符串作为变量传递给函数,并且只需要这样做一次。
这就是我目前的做法,需要两个变量:
function Foo{
$ExeToStart = "C:\Program Files\x\program.exe"
Start-Process $ExeToStart -ArgumentList "--arg1","--arg2"
}
有没有一种方法可以将它结合起来,这样我就可以只定义一个变量“y”并将其作为类似于下面的一行传递给函数?
$x = "C:\Program Files\x\program.exe -ArgumentList "--arg1","--arg2""
function Foo{
Start-Process $x
}
这里有一个方法可以实现你想要的。
# Create an array of the program and arguments
$x = 'C:\Program Files\x\program.exe','--arg1','--arg2'
# Example with no parameters
Function Foo {
Start-Process -FilePath $args[0][0] -ArgumentList $args[0][1..$args[0].Count]
}
# Example using parmeters
Function Foo {
param([string[]]$program)
$params = @{
FilePath = $program[0]
}
if ($program.Count -gt 1) {
$params['ArgumentList'] = $program[1..$program.Count]
}
Start-Process @Params
}
# Call the function
Foo $x