gpt4 book ai didi

powershell - 如何在运行 .exe 时使用安装参数和 -wait

转载 作者:行者123 更新时间:2023-12-02 23:02:28 27 4
gpt4 key购买 nike

我想安装 SQLServer2014SP1,然后安装 SQL Data Tools。在安装 SQL Data Tools 之前,我需要它等待 SP1 完成。

这是我一直在尝试的:

Write-Host "Launching SQL SP 1 ..."
Start-Process "\\mynetworkpath\SQLServer2014SP1.exe" -wait /qs /IAcceptSQLServerLicenseTerms /Action=Patch /AllInstances

Write-Host "Lauching SQL Server Data Tools install ..."
& "\\mynetworthpath\SSDTBI_x86_ENU.exe" /ACTION=INSTALL /FEATURES=SSDTBI,SNAC_SDK /Q /IACCEPTSQLSERVERLICENSETERMS

我已经尝试了 -wait/ 安装参数的不同组合,但是我收到了 SP1 安装失败的一般错误,或者它将完成并且 SSDT安装永远不会启动。

如果有更好的方法,我愿意接受建议。不过,它确实必须自动化。

最佳答案

你的 Start-Process 调用的语法有缺陷;尝试以下操作:

# Define executable
$exe = '\\mynetworkpath\SQLServer2014SP1.exe'
# Define *array* of arguments
$args = '/qs', '/IAcceptSQLServerLicenseTerms', '/Action=Patch', '/AllInstances'

Start-Process -Wait $exe -ArgumentList $args

中间变量并不是严格需要的,但我选择它们既是为了可读性,也是为了说明参数如何适合 Start-Process 语法:
传递参数必须作为数组传递给-ArgumentList (-Args) 参数。

-Wait 选项等待由指定可执行文件创建的进程终止,然后再继续执行下一个命令。当然,只有当该进程不异步生成其他进程来执行实际工作时,这才会按预期工作 - 我不知道您的特定可执行文件是否属于这种情况。

使用文字参数,您可以执行以下操作,这需要更少的引用:

Start-Process -Wait \\mynetworkpath\SQLServer2014SP1.exe -ArgumentList `
/qs, /IAcceptSQLServerLicenseTerms, /Action=Patch, /AllInstances

但是,通常,您需要注意 PowerShell 对不带引号或双引号的参数的预先解释(例如不带引号的 , 被解释为数组构造运算符),它比 cmd.exe 的更广泛 - 请参阅 this answer我的。

关于powershell - 如何在运行 .exe 时使用安装参数和 -wait,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43945941/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com