2

环境:

我在一个针对多个域配置测试软件的实验室工作。我目前有 8 个没有跨域信任的域。他们每个人都有一个与我们的主要 NOC WSUS 服务器对话的 WSUS 服务器。除了与主 WSUS 服务器通信外,没有从一个域到另一个域的通信。我无法更改 GPO 设置或安装任何尚未安装的软件。域范围从带有 Server 2003 的 Windows XP 到带有 Server 2008 的 Windows 7。每个域都有 8-20 个服务器和 3-5 个工作站。

我有一台可以与所有域中的每台服务器通信的机器,也可以与主 WSUS 服务器通信。我主要使用 PowerShell,但如果它使我想做的事情更容易,我不反对另一种语言。我安装了 PowerShell 2.0,但如果需要,我可以轻松安装 PowerShell 3.0。

设想:

我负责检查是否在每台服务器上都安装了补丁。此测试不能依赖于 WSUS 的内置报告工具,根据我无法更改的要求。我会收到一个补丁列表,我需要检查每台服务器以查看是否安装了补丁。由于补丁可以是从 Windows XP 到 Server 2008 的任何东西,我还需要检查补丁是否适用于服务器本身。我尝试使用它PoshWSUS来检查适用性,但由于 IIS 规则或防火墙规则,我无法连接到主 WSUS 服务器。我在网上搜索过,并遵循了几个指南,但是这个 WSUS 的设置非常定制,我只能对服务器本身做这么多。

例子:

我有以下补丁:

KB2604092
KB2676562
KB2686509

我想检查以下服务器:

DC01: A Windows Server 2008 Domain Controller

我目前正在使用以下 PowerShell 命令来测试它们是否已安装:

Get-HotFix -ID "KB2604092","KB2676562","KB2686509" -ComputerName DC01

此命令显示已安装以下补丁:

KB2676562
KB2686509

保留以下卸载:

KB2604092

这正确地告诉我KB2676562并且KB2686509已安装,但它并没有告诉我是否KB2604092丢失或不适用。

我坚持的是如何验证KB2604092不适用于 DC01。我可以轻松地搜索 Microsoft 的网站以验证它仅适用于 Windows Server 2003 或 Windows XP,但我如何通过脚本检查它的适用性。我很想找到一种方法来废弃 Microsoft KB 文章中的数据,但我不知道如何从网页中提取所需的信息。我认为必须在 WSUS 中进行检查以检查适用性,但我不知道在哪里可以找到类似的东西。

编辑:
我忘了提,我无法控制哪些补丁被批准,这是由外部公司完成的。

4

2 回答 2

4

对于安全补丁,Microsoft 发布了一个电子表格,列出了自 1998 年以来的所有安全公告。您可以从此页面下载。(直接链接到电子表格)

然后,您可以解析该电子表格(如果将其转换为 CSV 文件,那么在 powershell 中很容易解析)。它为您提供了您所询问的所有信息。

于 2012-10-18T23:02:06.413 回答
2

如果您只关心更新是否适用于相应的操作系统,IUpdate.ProductTitles应该会为您提供所需的信息。

还有更复杂的情况,例如仅在安装了某个系统组件时才适用更新。我认为没有任何方法可以自动处理这些情况。

于 2012-10-19T00:29:01.063 回答