如何在PowerShell中运行Windows安装程序并获取成功/失败值?

bur*_*1ce 11 powershell windows-installer

我想安装一组应用程序:.NET 4,IIS 7 PowerShell管理单元,ASP.NET MVC 3等.如何安装应用程序并返回一个值,该值确定安装是否成功?

Ant*_*ean 18

这些答案似乎都过于复杂或不够完整.在PowerShell控制台中运行安装程序有一些问题.MSI在Windows子系统中运行,因此您不能只调用它们(Invoke-Expression&).有些人声称得到这些命令通过管道合作,Out-Null或者Out-Host,但我还没有观察到,为了工作.

适用于我的方法是Start-Process使用静默安装参数msiexec.

$list = 
@(
    "/I `"$msi`"",                     # Install this MSI
    "/QN",                             # Quietly, without a UI
    "/L*V `"$ENV:TEMP\$name.log`""     # Verbose output to this log
)

Start-Process -FilePath "msiexec" -ArgumentList $list -Wait
Run Code Online (Sandbox Code Playgroud)

您可以从命令中获取退出代码Start-Process并检查其是否为通过/失败值.(这是退出代码参考)

$p = Start-Process -FilePath "msiexec" -ArgumentList $list -Wait -PassThru

if($p.ExitCode -ne 0)
{
    throw "Installation process returned error code: $($p.ExitCode)"
}
Run Code Online (Sandbox Code Playgroud)


rav*_*nth 3

依靠。可以使用 WMI 安装 MSI。对于exe和其他方法,您可以使用Start-Process并检查Process ExitCode。