我正在尝试使用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
但是:如果我尝试使用除“全部”,“关键”,“安全性”或“ 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"
有什么想法吗?
答案 0 :(得分:1)
这是一个术语不佳的情况。有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()
这将为您提供所有Feature Pack更新。在这里,您可以根据更新是否被取代来过滤掉它们。
我个人认为对象本身比WSUS的cmdlet有用得多,例如上面的$WSUS
获取更新分类,您可以从中获取该分类的更新。