如何判断 wusa.exe 何时完成运行?

如何判断 wusa.exe 何时完成运行?

这个问题在编程和系统管理之间有所区别,因此如下:

我有一个 PowerShell 脚本,用于安装某个软件的依赖项。其中一个依赖项是 .msu 文件。在我的脚本中,我像这样调用 wusa.exe:

"wusa.exe $DownloadDir\Windows6.1-KB2506143-x64.msu /quiet /norestart"

我已指定/quiet开关,因为这意味着静默/无人值守的安装。

但是我似乎找不到任何方法来判断 wusa 何时完成执行,因为它似乎是异步运行的。

当 wusa.exe 安装了修补程序和/或终止时,这是否会向我的脚本发出指示?

答案1

对此有多种可能的解决方案:

While 循环可以用来寻找进程,休眠几秒钟,然后在进程不再存在时继续:

Do {
    sleep 2
    $instanceCount = (Get-Process | Where { $_.Name -eq "notepad" } | Measure-Object).Count
} while ($instanceCount -gt 0)

等待工作可用于启动一项作业并等待一项作业完成:

$myJob = Start-Job -Name "MyJobName" -ScriptBlock { 
    #Do Something
 }
Wait-Job -Job $myJob 

启动进程也可以用来启动某件事并等待它完成:

Start-Process "C:\mything.exe arg1=something arg2=somethingelse" -NoNewWindow -Wait

希望这些能对你有所帮助

相关内容