如何 运行 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