这个问题在编程和系统管理之间有所区别,因此如下:
我有一个 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
希望这些能对你有所帮助