昨天,接到通知,需要给服务器安装KB5003638补丁,以解决Windows打印后台处理程序远程执行代码漏洞CVE-2021-1675。补丁文件大小1.8GB,在2台服务器上顺利安装,在1台服务器上提示不适用,猜测是该服务器有之前发布的补丁未安装的原因,但是由于服务器无法连接外网,要想办法在离线状态下检查出未安装的所有Windows更新。
在经过搜索后,发现微软提供了一种方式进行离线查询,参考链接:使用 WUA 脱机扫描更新
看了这篇文章后,经过多番尝试,最终将未安装的Windows更新跑了出来,特此记录操作步骤。
1、下载最新的Wsusscn2.cab文件,链接地址:http://download.windowsupdate.com/microsoftupdate/v6/wsusscan/wsusscn2.cab
下载完成后,将文件复制到服务器上
2、在服务器上新建一个VBS脚本文件update.vbs,写入如下代码内容:
Set UpdateSession = CreateObject("Microsoft.Update.Session")
Set UpdateServiceManager = CreateObject("Microsoft.Update.ServiceManager")
Set UpdateService = UpdateServiceManager.AddScanPackageService("Offline Sync Service", "D:\wsusscn2.cab", 1)
Set UpdateSearcher = UpdateSession.CreateUpdateSearcher()
WScript.Echo "Searching for updates..." & vbCRLF
UpdateSearcher.ServerSelection = 3 ' ssOthers
UpdateSearcher.ServiceID = UpdateService.ServiceID
Set SearchResult = UpdateSearcher.Search("IsInstalled=0")
Set Updates = SearchResult.Updates
If searchResult.Updates.Count = 0 Then
WScript.Echo "There are no applicable updates."
WScript.Quit
End If
WScript.Echo "List of applicable items on the machine when using wssuscan.cab:" & vbCRLF
For I = 0 to searchResult.Updates.Count-1
Set update = searchResult.Updates.Item(I)
WScript.Echo I + 1 & "> " & update.Title
Next
WScript.Quit
注:其中第三行中的路径需指向服务器上的Wsusscn2.cab文件
3、打开cmd,跳转到update.vbs文件所在的目录,执行如下命令并耐心等待:
cscript update.vbs
4、等命令执行完成,查看结果,即可根据结果逐个尝试安装补丁