环境:
我在一个针对多个域配置测试软件的实验室工作。我目前有 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 中进行检查以检查适用性,但我不知道在哪里可以找到类似的东西。
编辑:
我忘了提,我无法控制哪些补丁被批准,这是由外部公司完成的。