如何判断 Windows 更新何时完成

如何判断 Windows 更新何时完成

在 Windows 10 家庭版中,Windows 更新的选项有限。我想阻止它启动,而是让用户在准备好时启动它。原因是它启动太频繁,耗时太长,而且会耗尽电池电量,用户不满意。

我可以禁用 Windows 更新服务并设置提醒,让用户启动脚本以重新启用并启动它。但是我如何知道 Windows 更新何时完成,以便我可以再次禁用该服务?

这个问题没有帮助...

如何快速检测我的电脑上是否正在运行 Windows 更新

答案1

也许,您可以使用任务计划程序安排 PowerShell 脚本来每周三检查 Windows 更新客户端历史记录。

我编写了一个快速脚本,用于检查过去一天内应用的所有更新是否成功。

$Session = New-Object -ComObject "Microsoft.Update.Session"

$Searcher = $Session.CreateUpdateSearcher()
$yesterday = (Get-Date).Addmonths(-5)

$historyCount = $Searcher.GetTotalHistoryCount()



$Searcher = $Searcher.QueryHistory(0, $historyCount) | Where-object {$_.Date -gt $yesterday} |Select-Object Title, Date,

    @{name="Result"; expression={switch($_.ResultCode){

       0{"NotStarted"}; 1 {"InProgress"}; 2 {"Succeeded"}; 3 {"SucceededWithErrors"}; 4 {"Failed"}; 5{"Aborted"}

}}} 


if ($Searcher -eq $null){

Write-Host "Updates not found."
break

}

#Checks for whether all updates installed correctly.
if ($Searcher.Result -eq "Succeeded"){

Write-Host "Everything installed."

#Stops windows service
Stop-Service -Name wuauserv -Force
Get-service  -Name wuauserv 


}
elseif ($Searcher.Result -eq "InProgress"){

Write-Host "Updates are still been applied."
}
else {


Write-Host "Updates are in error status"
$Searcher 
}

笔记:

感谢 Microsoft TechNet 论坛的 Kurt Hudson 和 Peter Gleelen 发表此帖如何列出计算机中应用的所有 Windows 和软件更新

答案2

我建议你使用名为Windows 更新迷你工具它允许搜索更新并选择您想要安装的更新,并允许阻止更新,就像在以前的 Windows 版本中一样。

在此处输入图片描述

标准 Windows 更新的替代方案您可以执行以下操作:
检查更新
• 下载更新
• 安装更新
• 删除已安装的更新
• 隐藏不需要的更新
• 获取 *.cab / *.Exe / *.Psf 更新文件的直接链接 • 查看更新历史记录
• 配置自动更新
• 此工具类似于外部 powershell 模块 PSWindowsUpdate,但功能更加先进且用户友好
• 该工具依赖并使用相同的 WU 基础架构,所有下载均通过 WU 进行,它不是下载器

答案3

如果您使用来自的模块 PSWindowsUpdatePS画廊您可以在每次修补程序运行后检查可用的更新,直到没有更多更新......

Install-Module PSWindowsUpdate
while (Get-WUList) {
  Install-WindowsUpdate -AcceptAll -AutoReboot
}

现在,您当然需要在每次重启后启动此功能,直到没有更多补丁。

相关内容