环境:
我在一个针对多个域配置测试软件的实验室工作。我目前有8个没有跨域信任的域名。它们每个都有一个与我们的主要NOC WSUS服务器通信的WSUS服务器。除了与主WSUS服务器通信之外,没有从一个域到另一个域的通信。我无法更改GPO设置或安装任何尚未安装的软件。这些域的范围从Windows XP到Server 2003到带有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中必须检查以检查适用性,但我不知道在哪里寻找类似的东西。
修改
我忘了提及,我无法控制哪些补丁被批准,这是由外部公司完成的。
答案 0 :(得分:4)
对于安全补丁,Microsoft发布了一个电子表格,列出了自1998年以来的所有安全公告。您可以从this page下载。 (Direct link to spreadsheet)
然后您可以解析该电子表格(如果将其转换为CSV文件,那么在PowerShell中很容易解析)。它会为您提供您所询问的所有信息。
答案 1 :(得分:2)
如果您只对更新是否适用于相应的操作系统感兴趣,IUpdate.ProductTitles应该会为您提供所需的信息。
还有更复杂的情况,例如只有安装了某个系统组件才能应用更新。我认为没有办法自动处理这些案件。