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

Posted

技术标签:

【中文标题】使用参数从 Powershell 脚本运行可执行文件【英文标题】:Run Executable from Powershell script with parameters 【发布时间】:2014-09-30 23:05:53 【问题描述】:

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

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

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

有什么想法吗?

【问题讨论】:

@sebagomez 我发现了这个关于上述链接的 reddit 帖子:reddit.com/r/PowerShell/comments/28zc0w/… 【参考方案1】:

只需添加一个对我来说效果很好的示例:

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

【讨论】:

【参考方案2】:

我可以通过使用 Invoke-Expression cmdlet 来实现它。

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

【讨论】:

【参考方案3】:

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

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

& $app $arg1 $arg2 $arg3

【讨论】:

你知道如何循环移动这个逻辑吗?【参考方案4】:

尝试引用参数列表:

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

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

【讨论】:

以上是关于使用参数从 Powershell 脚本运行可执行文件的主要内容,如果未能解决你的问题,请参考以下文章

PowerShell 添加任务以使用参数运行 PowerShell 脚本

Windows 上的 github 运行程序在 PowerShell 上找不到可执行文件

PowerShell工作流学习-2-工作流运行Powershell命令

从批处理文件运行 Powershell 脚本中的参数

从CMD文件运行PowerShell脚本 - 参数类型出错

powershell远程下载exe并执行