首页 > 解决方案 > PowerShell WSUS 查询不会使用所有分类

问题描述

我正在尝试使用 powershell 自动化一些 WSUS 的东西!

当我运行这个命令时:

Get-WSUSClassification -WSUSserver MyServer

结果符合预期:我们有所有这些分类:

Title              ID                                  
-----              --                                  
Applications       5c9376ab-8ce6-464a-b136-22113dd69801
Critical Updates   e6cf1350-c01b-414d-a61f-263d14d133b4
Definition Updates e0789628-ce08-4437-be74-2495b842f43b
Driver Sets        77835c8d-62a7-41f5-82ad-f28d1af1e3b1
Drivers            ebfc1fc5-71a4-4f7b-9aca-3b9a503104a0
Feature Packs      b54e7d24-7add-428f-8b75-90a396fa584f
Security Updates   0fa1201d-4330-4fa8-8ae9-b877473b6441
Service Packs      68c5b0a3-d1a6-4553-ae49-01d3a7827828
Tools              b4832bd8-e735-4761-8daf-37f882276dab
Update Rollups     28bc880e-0592-4cbf-8f95-c79b17911d5f
Updates            cd5ffd1e-e932-4e3a-bf74-18bf0b1bbd83
Upgrades           3689bdc8-b205-4af4-8d4a-a63924c5e9d5

但是:如果我尝试使用除“All”、“Critical”、“Security”或“WSUS”之外的任何内容,

 get-wsusUpdate -approval UnApproved -Classification "Drivers" -status Needed -updateserver MyWSUS

我收到以下错误:

Get-WsusUpdate : Cannot bind parameter 'Classification'. Cannot convert value "Feature Packs" to type "Microsoft.UpdateServices.Commands.WsusUpdateClassifications". Error: "Unable to match the identifier name Feature Packs to a valid enumerator name. Specify one of the following enumerator names and try again: All, Critical, Security, WSUS"

有任何想法吗?

标签: powershell

解决方案


这是一个用词不当的例子。有 WSUS 分类和 WSUS 更新分类,它们是不同的东西。您已经知道如何查看第一次使用的选项Get-WsusClassification。您可以使用以下命令查看后者的有效选项[enum]::GetNames(<EnumType>)

PS C:\Windows\system32> [enum]::GetNames([Microsoft.UpdateServices.Commands.WsusUpdateClassifications])
All
Critical
Security
WSUS

那么,我们可以获得归类为功能包的更新吗?我们可以,但我所知道的唯一方法需要更多的步法。这是我的做法:

$WSUS = Get-WsusServer
$FPClass = $WSUS.GetUpdateClassifications()|Where{$_.Title -eq 'Feature Packs'}
$FPClass.GetUpdates()

现在,您确实知道所需分类的 GUID,因此如果您想使用 GUID,可以缩短它:

$WSUS.GetUpdateClassification('b54e7d24-7add-428f-8b75-90a396fa584f').GetUpdates()

这将为您提供所有功能包更新。从那里您可以根据更新是否被取代或不需要来过滤掉更新。

就个人而言,我发现对象本身比 WSUS 的 cmdlet 更有用,例如$WSUS上面获取更新分类,您可以从中获取该分类的更新。


推荐阅读