WSUS-Server bereinigen mittels GUI-Assistenten oder PowerShell


    Tags: ,

    WSUS Server-BereinigungBezieht ein WSUS-Server die Updates für zahl­reiche Pro­dukte in meh­reren Sprachen, dann bean­spruchen diese mit der Zeit viel Speicher­platz. Un­günstig konfi­gurierte auto­matische Geneh­migungen ver­schärfen die Lage noch. Die WSUS sehen dann für die Rück­gewinnung von Platten­platz eine Bereinigung vor.

    Neben der Zahl der Produkte und Sprachen, für die man Updates bezieht, sind noch andere Faktoren ausschlag­gebend für die Datenmengen, die sich auf einem WSUS-Server ansammeln. Dazu gehört etwa auch die Auswahl der Klassi­fizierungen, also welche Art von Updates man abonniert.

    Ursachen für Platzverbrauch

    Zur Aufblähung des Daten­volumens trägt zudem die Eigenart der Windows Server Update Services bei, auch jene Updates herunterzuladen, die durch neuere Updates ersetzt wurden ("Superseded Updates").

    Schließlich kann auch der Admin durch ungeschickte Maßnahmen dazu beitragen. Neben einer zu großzügigen Freigabe von Updates zählt dazu auch die Aktivierung der Express-Option ("Schnell­installations­dateien") oder der Download von noch nicht genehmigten Updates.

    Das Herunterladen der so genannten Schnell­installations­dateien erhöht den Platzverbrauch.

    Kommen einige der genannten Aspekte zusammen, dann über­schreitet der Platz­verbrauch für herunter­geladene Updates ohne Weiteres 100 GB.

    Wenn für die lokale Speicherung von Update-Dateien generell der Platz knapp ist, dann kann man ganz darauf verzichten, diese auf den WSUS-Server herunterzuladen. In diesem Fall würde man zwar noch die Updates über WSUS genehmigen, die Clients beziehen diese aber dann direkt über Microsoft Update.

    Mit dieser Option kann man auf den Download der Update-Dateien verzichten, die Updates aber weiter über WSUS genehmigen.

    Die dafür zuständige Einstellung findet sich ebenfalls unter Optionen => Updatedateien und Sprachen.

    Vorüberlegungen

    Bevor man sich ans Aufräumen macht, sollte man sich dafür ein paar Regeln in Erinnerung rufen.

    • Die Bereinigung sollte nicht zu einer Zeit erfolgen, zu der WSUS die Updates synchronisiert. Hat man eine zeit­gesteuerte Synchronisierung konfiguriert, dann liegt es nahe, ausreichend Abstand zum nächsten Sync-Lauf zu halten. Das ist auch zu beachten, wenn man zu diesem Zweck ein Script über die Aufgaben­planung startet. Ein Cleanup kann manchmal sehr lange dauern.
    • Betreibt man mehrere WSUS-Server in einer Hub-and-Spoke-Topologie, dann müssen zuerst die Downstream-Server bereinigt werden. Man beginnt in der Hierarchie der vernetzten WSUS-Server also ganz unten und arbeitet sich dann zu den Instanzen hoch, von denen die zuvor bereinigten Server ihre Updates beziehen.
    • Unabhängig davon, ob man die GUI oder ein Script einsetzt, sollte man bei einer ersten Bereinigung nach einer langen Pause nicht alle Mecha­nismen gleichzeitig ausführen, weil es dann leicht zu einem Time-out des Prozesses kommen kann. Ein solches Vorgehen hilft auch, um eine lange Laufzeit und somit eine Kollision mit der Synchro­nisierung zu vermeiden.

    Zur Auswahl steht die Bereinigung folgender Ressourcen:

    • Nicht verwendete Updates und Updaterevisionen: Trifft auf Updates zu, die seit mindestens 30 Tagen nicht genehmigt wurden.
    • Computer, die keine Verbindung mit dem Server herstellen: Auch hier gilt die 30-Tage-Frist, um inaktive Computer zu identifizieren.
    • Nicht erforderliche Updatedateien: Dabei handelt es sich um Dateien, die weder von Clients noch von abhängigen WSUS-Servern angefordert wurden. Davon können auch Dateien betroffen sein, die man selbst aus dem Update-Katalog importiert hat, etwa das Update auf IE11.
    • Abgelaufene Updates: Updates, die von Microsoft als abgelaufen markiert und vom Admin nicht genehmigt wurden, erhalten den Status abgelehnt.
    • Ersetzte Updates: Updates, die seit mehr als 30 Tage nicht genehmigt und durch neuere, bereits genehmigte Updates ersetzt wurden, wechseln auf den Status abgelehnt.

    Die Optionen zur WSUS-Bereinigung im Wizard des WSUS-Managers

    Will man die Bereinigung aus den oben genannten Gründen in mehreren Schritten erledigen, dann könnte man mit dem Entfernen inaktiver Computer beginnen. In einem zweiten Durchlauf würde man dann abgelaufene und ersetzte Updates auf den Status Abgelehnt zurücksetzen, um sie für das spätere Entfernen vorzubereiten.

    Abgelaufene Updates ablehnen mit dem Wizard zur WSUS-Bereinigung

    Schließlich kann man sich noch die nicht verwendeten Updates und die nicht erforderlichen Update-Dateien vornehmen.

    Bericht zur Bereinigung des WSUS-Servers

    Wenn die Ergebnisse des Aufräumens weit hinter den Erwartungen bleiben, dann kann dies daran liegen, dass zahl­reiche Updates durch ein automatisches Genehmigen für die Installation freigegeben sind. In diesem Fall liegt es nahe, die nicht benötigten Updates erst abzulehnen.

    WSUS mit PowerShell bereinigen

    In der Vergangenheit grassierten mehrere Scripts, um WSUS aufzuräumen, und sie finden sich im Web noch in vielen Anleitungen. Viele davon riefen dazu .NET-Assemblies auf. Dies ist nicht mehr erforderlich, weil seit Windows Server 2012 ein eigenes Cmdlet für diese Aufgabe namens Invoke-WsusServerCleanup existiert.

    Es unterstützt mehrere Parameter, die den jeweiligen Optionen im Wizard des WSUS-Managers entsprechen. Sie lauten

    • CleanupObsoleteComputers
    • CleanupObsoleteUpdates
    • CleanupUnneededContentFiles
    • DeclineExpiredUpdates
    • DeclineSupersededUpdates

    Hinzu kommt noch CompressUpdates, das überflüssige Update-Revisionen aus der Datenbank entfernt. Den Namen des WSUS-Servers übergibt man nicht als String, sondern ermittelt diesen erst mit Hilfe von Get-WsusServer:

    $WSUS = Get-WsusServer -Name ws2016-wsus -PortNumber 8530

    Invoke-WsusServerCleanup -UpdateServer $WSUS -CleanupObsoleteComputers -Verbose

    Mit Hilfe dieser Befehlssequenz würde man inaktive Computer bereinigen.

    Inaktive Computer bereinigen mit Invoke-WsusServerCleanup

    Möchte man die Bereinigung über die Aufgaben­planung zeitgesteuert ausführen, dann besteht entweder die Möglichkeit, alle Parameter in einen Aufruf des Cmdlets zu packen oder den Vorgang in mehrere Aufgaben zu zerteilen.

    Nicht benötigte Update-Dateien entfernen mit PowerShell

    Für die zweite Option könnte man das Cmdlet mit verschiedenen Parametern in zeitlichen Abständen mehrmals starten.

    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.

    Bild von Wolfgang Sommergut
    Wolfgang Sommergut hat lang­jährige Erfahrung als Fach­autor, Berater und Kon­ferenz­sprecher zu ver­schie­denen Themen der IT. Da­ne­ben war er als System­ad­mi­ni­stra­tor und Con­sultant tätig.
    // Kontakt: E-Mail, XING, LinkedIn //

    Ähnliche Beiträge

    Weitere Links

    5 Kommentare

    Hallo, vielen Dank für diesen Beitrag. Ich habe schon eine Zeit lang nach dieser Möglichkeit gesucht aber komischerweise nichts gefunden ausser ellenlanger, komplizierter Script´s.
    Per Powershell ist das natürlich super easy und hat auch sofort funktioniert.

    Gruß
    Christian

    Da kann ich mich nur anschließen! Die Erläuterungen haben heute sehr geholfen.

    Vielen Dank für den Artikel!

    Vielen Dank für diesen Artikel.
    Hier wird nur von der Bereingung auf Dateiebene gesprochen:

    Sind die älteren DB cleanup und refresh scripts die im Internet kursieren weiterhin zu empfehlen oder gibt es auch auf DB-ebene neue Herangehensweisen?

    Bild von Wolfgang Sommergut

    Der Bereinigungsassistent beschränkt sich nicht auf das Dateisystem. Um die Reindexierung der Datenbank kümmert er sich jedoch nicht, dafür gibt es ein entsprechendes SQL-Script. Siehe dazu meine Anleitung.