安装参数会中断自动 PowerShell 安装



我正在通过PowerShell脚本安装SQL Data Tools。我运行了我的脚本,但安装数据工具的最后一部分失败了(在 SQL 安装程序窗口中)。如果我在没有该部分的情况下运行脚本,并手动安装数据工具,它可以工作。

错误是:

VS 命令行管理程序安装失败,退出代码为 -2147205120。

此部件之前将安装 .NET 和 SQL Server Management Studio。我认为它们与我的问题无关,但如果需要,我会发布该部分。以下是相关部分。第一个try块安装 SQL SP1(现在为便于阅读而删除),第二个块安装数据工具和SNAC_SDK。

try
{
Write-Host "Lauching SQL Server Data Tools install ..."
& "\mynetworkpathSSDTBI_x86_ENU.exe" "/ACTION=INSTALL" "/FEATURES=SSDTBI,SNAC_SDK" "/Q" "/IACCEPTSQLSERVERLICENSETERMS"
Write-Host "Installer launched ..."
}
catch
{
Write-Host "SQL Server Data Tools installation failed"
exit
}

我尝试过处理数据工具安装部分的参数,并使用 -wait 动词来确保 SP1 肯定完成,但没有运气。

编辑:根据马特的建议,我将/NORESTART 添加到我的参数列表中,但现在它没有安装任何东西,也没有错误......

编辑:添加了带有引号参数的更新代码。仍然不起作用,但我认为它比原来更接近。

我认为参数中的逗号是这里的罪魁祸首,因为powershell将以逗号分隔的实体解释为数组。

你可以看到参数是如何通过这个小技巧传递的

& { $args } /ACTION=INSTALL /FEATURES=SSDTBI,SNAC_SDK /Q /IACCEPTSQLSERVERLICENSETERMS

这给了

/操作=安装

/功能=SSDTBI

SNAC_SDK

/Q

/IACCEPTSQLSERVERLICENSETERMS

要摆脱这个问题,您至少需要引用FEATURES参数。在这些情况下,我通常会引用所有内容,只是为了保持一致,所以

& { $args } "/ACTION=INSTALL" "/FEATURES=SSDTBI,SNAC_SDK" "/Q" "/IACCEPTSQLSERVERLICENSETERMS"

为您提供所需的参数:

/操作=安装

/FEATURES=SSDTBI,SNAC_SDK

/Q

/IACCEPTSQLSERVERLICENSETERMS

更新:许多安装程序在被调用后立即返回,而安装过程仍在后台运行,当脚本的其余部分取决于安装时,这可能是一个错误。

有几种方法可以使powershell等待进程退出。最短的一种方法是使用这样的Out-Null

& "\mynetworkpathSSDTBI_x86_ENU.exe" "/ACTION=INSTALL" "/FEATURES=SSDTBI,SNAC_SDK" "/Q" "/IACCEPTSQLSERVERLICENSETERMS" | Out-Null

您可能还想在之后查看$?$LASTEXITCODE以检查错误。

最新更新