【发布时间】:2012-10-18 22:16:17
【问题描述】:
环境:
我在一个针对多个域配置测试软件的实验室工作。我目前有 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 中进行检查以检查适用性,但我不知道在哪里可以找到类似的东西。
编辑:
我忘了提一下,我无法控制哪些补丁是由外部公司批准的。
【问题讨论】:
-
这只是针对安全补丁,还是所有可能的补丁?
-
@zdan 它主要用于安全补丁,但也有可能出现任何微软补丁。
-
为了未来读者的利益,还可以使用 Windows Update API 绕过 WSUS 服务器并直接扫描 Microsoft Update。但是,客户确实需要互联网访问才能使其正常工作。另一种选择(仅适用于安全更新)是使用
wsusscn2.cab进行离线扫描。
标签: windows powershell patch