使用参数从Powershell脚本运行可执行文件

时间:2014-08-07 15:58:08

标签: powershell command-line

所以我有一个powershell脚本应该运行一个带有参数的可执行文件来设置我想要运行的方法,我需要传递一个参数,这是一个配置文件的目录。所以这就是我所拥有的

Start-Process -FilePath "C:\Program Files\MSBuild\test.exe" -ArgumentList /genmsi/f $MySourceDirectory\src\Deployment\Installations.xml

/ f是短名称,文件是我的属性的长名称...我在powershell中收到错误,告诉我无法找到/ f或/ file的位置参数。

有什么想法吗?

4 个答案:

答案 0 :(得分:49)

尝试引用参数列表:

Start-Process -FilePath "C:\Program Files\MSBuild\test.exe" -ArgumentList "/genmsi/f $MySourceDirectory\src\Deployment\Installations.xml"

您还可以将参数列表作为数组(逗号分隔的args)提供,但使用字符串通常更容易。

答案 1 :(得分:26)

这是执行多个args的另一种方法。当参数对于一个班轮来说太长时,我会使用它。

$app = 'C:\Program Files\MSBuild\test.exe'
$arg1 = '/genmsi'
$arg2 = '/f'
$arg3 = '$MySourceDirectory\src\Deployment\Installations.xml'

& $app $arg1 $arg2 $arg3

答案 2 :(得分:24)

我可以使用Invoke-Expression cmdlet来实现此功能。

Invoke-Expression "& `"$scriptPath`" test -r $number -b $testNumber -f $FileVersion -a $ApplicationID"

答案 3 :(得分:5)

添加一个对我来说很好的例子:

$sqldb = [string]($sqldir) + '\bin\MySQLInstanceConfig.exe'
$myarg = '-i ConnectionUsage=DSS Port=3311 ServiceName=MySQL RootPassword= ' + $rootpw
Start-Process $sqldb -ArgumentList $myarg