虽然我通常使用预先烘焙的Windows服务器映像,但我偶尔会遇到这样的情况,即我必须从头开始设置映像,并经历检查更新、安装更新然后重新启动的极其乏味的过程。很多,很多,很多次。
我正在尝试编写一个简单的脚本来实现自动化。
检查和安装更新很简单:
wuauclt.exe /detectnow /updatenow
重新启动也同样简单:
shutdown /r /t 0
但我想做的是创建一个PowerShell工作流,在重新启动后继续运行,在循环中运行上述命令。
我还没有弄清楚的领域是:
- 如何检查更新是否已完成
- 如何测试是否没有剩余的更新可供安装(AKA Windows已完全更新,脚本可以停止)
使用更新搜索器检查挂起的更新:
$criteria = "Type='software' and IsAssigned=1 and IsHidden=0 and IsInstalled=0"
$searcher = (New-Object -COM Microsoft.Update.Session).CreateUpdateSearcher()
$updates = $searcher.Search($criteria).Updates
if ($updates.Count -ne 0) {
# $updates pending
} else {
# system up-to-date
}