Tags: WSUS, PowerShell
Die Auswahl von Produkten, für die man über WSUS Updates beziehen möchte, ist über die Konsole relativ umständlich. Mittels PowerShell kann man sie nach Suchbegriffen filtern und dann abonnieren oder wieder abbestellen. Die Klassifizierungen lassen sich dann auf diesem Weg auch gleich erledigen.
Wie ein Blick in die WSUS-Konsole zeigt, ist die Liste der Produkte, für die man Update abonnieren kann, ziemlich lang. Viele von ihnen enthalten zudem diverse Versionen und Komponenten als Unterkategorien. Hinzu kommt, dass die Zuordnung nicht immer logisch ist und eine Suchfunktion fehlt.
Produkte filtern
Mit Hilfe von Get-WsusServer stellt man zuerst die Verbindung zum WSUS-Server her. Anschließend kann man die Produkte mit dem Cmdlet Get-WsusProduct abrufen:
$WSUS = Get-WsusServer -Name <WSUS-FQDN> -PortNumber 8531 -UseSsl
Get-WsusProduct -UpdateServer $WSUS
Arbeitet man auf der Konsole des WSUS-Servers, dann kann man sich bei Get-WsusServer den Parameter UpdateServer sparen.
Der obige Beispielaufruf von Get-WsusProduct wirft die gesamte Liste der verfügbaren Produkte aus, und zwar die erste Ebene inklusive der Subkategorien. Einschränken kann man diese durch den Parameter TitleIncludes:
Get-WsusProduct -TitleIncludes "System Center"
Dieser Aufruf würde nach Produkten suchen, die System Center im Titel enthalten. Davon abhängige Subkategorien bleiben jedoch verborgen, wenn in ihrem Titel dieser Begriff nicht vorkommt. Dies gilt im Fall von System Center etwa für den Azure Backup Server.
Wenn man gezielt eine Kategorie und deren untergeordnete Produkte abfragen möchte, müsste man so vorgehen:
$Prod = Get-WsusProduct | where{ $_.Product.Title -eq "System Center"}
$Prod;$prod.Product.GetSubcategories() | Format-Table Title, ID
Der erste Befehl findet tatsächlich nur die Hauptkategorie System Center, und über die Methode GetSubcategories() kann man die untergeordneten Einträge abrufen.
Bereits ausgewählte Produkte anzeigen
Bevor man nun ein Produkt mittels PowerShell abonniert, möchte man sich wahrscheinlich überzeugen, ob man dieses eventuell schon für die Synchronisierung ausgewählt hat. Die bereits im WSUS-Server aktivierten Produkte erhält man wie folgt:
$WSUS.GetSubscription().GetUpdateCategories() | select title
Die Ausgabe unterscheidet nicht zwischen Haupt- und Unterkategorie, sondern man bekommt einfach eine flache Liste mit den Einträgen, die man in der Konsole angehakt hat.
Produkte abonnieren
Hat man die gewünschten Produkte gefunden, dann kann man sie mit Hilfe von Set-WsusProduct abonnieren. Diesem Cmdlet übergibt man den Output von Get-WsusProduct.
Get-WsusProduct -TitleIncludes "Office" | Set-WsusProduct
In der Regel wird man aber eine so grobe Zuordnung nicht wollen, da Dutzende Produkte den Begriff "Office" enthalten. Daher liegt es nahe, die genauen Bezeichnungen bei TitleIncludes anzugeben oder gleich den Weg über einen Aufruf nach diesem Muster zu wählen:
Get-WsusProduct |
where{ $_.Product.Title -eq " System Center 2019 - Orchestrator"} |
Set-WsusProduct
Wenn man sicherstellen möchte, dass sich nicht die falschen Produkte in der Liste wiederfinden, dann kann man Set-WsusProduct erst mit dem Schalter WhatIf ausführen.
Wenn man Unterkategorien, wie oben gezeigt, über die Methode GetSubcategories() filtert, dann kann man das Ergebnis nicht an Set-WsusProduct weiterleiten. Sie gibt nämlich Objekte vom Typ UpdateCategory zurück, aber das Cmdlet erwartet WsusProduct.
Mittels Set-WsusProduct kann man auch Produkte abwählen. Dazu verwendet man den Schalter Disable. Ansonsten ist das Vorgehen identisch mit dem Abonnieren:
Get-WsusProduct | where{ $_.Product.Title -eq " System Center 2019 - Orchestrator"} |
Set-WsusProduct -Disable
Klassifizierungen auswählen
Wesentlich einfacher fällt die Aufgabe beim Management der Update-Klassifizierungen. Dabei handelt es sich nur um eine Handvoll Einträge und sie haben keine Unterkategorien. Um herauszufinden, welche man bereits ausgewählt hat, nutzt man diesen Befehl:
$WSUS.GetSubscription().GetUpdateClassifications() | select title
Wenn man auf dem WSUS-Server arbeitet und die Variable $WSUS nicht zugewiesen hat, dann sieht der Aufruf so aus:
(Get-WsusServer).GetSubscription().GetUpdateClassifications() | select title
Die Liste der verfügbaren Klassifizierungen lässt sich mit Get-WsusClassification ausgeben. Einen Parameter zum Filtern der Einträge gibt es hier nicht.
Eine bestimmte Klassifizierung könnte man daher so aktivieren:
Get-WsusClassification | Where {$_.Classification.Title -eq "Definition Updates"} |
Set-WsusClassification
Für das Aktivieren oder Abbestellen von Updates spezifischer Klassifizierungen dient Set-WsusClassification. Es unterstützt wie sein Pendant bei den Produkten den Schalter Disable, um Klassifizierungen zu deaktivieren.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- WSUS-Bereinigung als geplante Aufgabe ausführen
- PowerShell 7 über Windows Update oder WSUS aktualisieren
- WSUS Automated Maintenance im Test: Updates ablehnen und entfernen, Datenbank und IIS optimieren
- Updates in WSUS importieren mit Internet Explorer oder PowerShell
- WSUS-Speicherplatz zurückgewinnen: Alte und ersetzte Updates löschen
Weitere Links
1 Kommentar
In der PowerShell Gallery von Microsoft gibt es eine sehr schönes Modul zur Adminstration des WSUS Servers.
https://www.powershellgallery.com/packages/PoshWSUS
Dieses Modul hat deutlich mehr Befehle und man kann so gescriptet filigrane Auswertungen machen.
Grüße Boris