我想安装 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
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的-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
Run Code Online (Sandbox Code Playgroud)
中间变量不是严格需要的,但我选择它们既是为了可读性,也是为了说明参数如何适应Start-Process语法:
传递参数必须作为数组传递给-ArgumentList( -Args) 参数。
该-Wait选项等待由指定的可执行文件创建的进程终止,然后再继续执行下一个命令。当然,这只有在该进程没有异步生成其他执行实际工作的进程时才能按预期工作 - 我不知道您的特定可执行文件是否是这种情况。
使用文字参数,您可以执行以下操作,这需要更少的引用:
Start-Process -Wait \\mynetworkpath\SQLServer2014SP1.exe -ArgumentList `
/qs, /IAcceptSQLServerLicenseTerms, /Action=Patch, /AllInstances
Run Code Online (Sandbox Code Playgroud)
但是,通常,您需要注意 PowerShell 对未加引号或双引号参数的预先解释(例如未加引号的使用,被解释为数组构造运算符),它比cmd.exe's更广泛- 请参阅此答案我的。
| 归档时间: |
|
| 查看次数: |
1045 次 |
| 最近记录: |