2

使用Windows 更新代理 API,可以列出 Windows 更新。例如:

Set UpdateSession = CreateObject("Microsoft.Update.Session")
Set UpdateSearcher = UpdateSession.CreateUpdateSearcher()
Set SearchResult = UpdateSearcher.Search("IsInstalled=0 OR IsInstalled=1")
Set Updates = SearchResult.Updates
For I = 0 to SearchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
    WScript.Echo I + 1 & "> " & update.Title
Next

由于上面我正在查询已安装和未安装的更新,因此我假设结果列出了我当前 Windows 版本/构建的所有可用更新。那是对的吗?

我现在的意思是:我也可以查询不同的版本吗?
例如,列出来自 Windows 10 系统的 Windows Server 2016 更新。

这个想法是轻松配置开发人员 Windows 虚拟机,采用 ISO 和最近的累积更新。

4

1 回答 1

1

复活一个死问题!

不,Windows Update 客户端完全基于当前计算机。我检查了网络流量以对更新服务器流量进行逆向工程,但我一无所获。YMMV。

典型的方法是让构建服务器从基本 ISO 创建一个映像,启动它,应用更新,然后将其关闭并从中创建一个主映像。您将定期执行此操作,以便在配置新 VM 时不会超过 x 天的更新。例如,您可以每晚进行一次。

查看一个名为 Packer 的工具。(这不是背书,只是一个例子。)

如果你走这条路,你也会为自己打开大门,做一些事情,比如对图像运行安全扫描或安装便利包。您可以推送到图像中的越多,您日常工作量中的任务就越少。

您提到这是针对开发人员机器的。您是否考虑过 VS Code 中的开发容器?

于 2020-11-17T17:52:22.047 回答