Produkte und Klassifizierungen in WSUS mit PowerShell konfigurieren


    Tags: ,

    WSUS mit PowerShell verwaltenDie Auswahl von Produkten, für die man über WSUS Updates be­ziehen möchte, ist über die Kon­sole relativ um­ständlich. Mittels PowerShell kann man sie nach Such­begriffen filtern und dann abonnieren oder wieder abbestellen. Die Klassi­fizierungen 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.

    Mit WSUS-Server verbinden und alle Produkte auflisten

    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.

    Filtert man über den Parameter TitleIncludes, dann führt Get-WsusProduct eine Substring-Suche aus

    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.

    Untergeordnete Produktkategorien über die Methode GetUpdateCategories abrufen

    Bereits ausgewählte Produkte anzeigen

    Bevor man nun ein Produkt mittels PowerShell abonniert, möchte man sich wahrscheinlich über­zeugen, 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.

    Bereits abonnierte Produkte ausgeben

    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.

    Produkt in WSUS mittels Set-WsusProduct abonnieren

    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.

    Klassifizierungen in WSUS auflisten mit Get-WsusClassification

    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

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    1 Kommentar

    Boris B. sagt:
    6. Mai 2021 - 15:00

    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