Tags: WSUS, Storage
Bezieht ein WSUS-Server die Updates für zahlreiche Produkte in mehreren Sprachen, dann beanspruchen diese mit der Zeit viel Speicherplatz. Ungünstig konfigurierte automatische Genehmigungen verschärfen die Lage noch. Die WSUS sehen dann für die Rückgewinnung von Plattenplatz eine Bereinigung vor.
Neben der Zahl der Produkte und Sprachen, für die man Updates bezieht, sind noch andere Faktoren ausschlaggebend für die Datenmengen, die sich auf einem WSUS-Server ansammeln. Dazu gehört etwa auch die Auswahl der Klassifizierungen, also welche Art von Updates man abonniert.
Ursachen für Platzverbrauch
Zur Aufblähung des Datenvolumens 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 ("Schnellinstallationsdateien") oder der Download von noch nicht genehmigten Updates.
Kommen einige der genannten Aspekte zusammen, dann überschreitet der Platzverbrauch für heruntergeladene 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.
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 zeitgesteuerte 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 Aufgabenplanung 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 Mechanismen 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 Synchronisierung 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.
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.
Schließlich kann man sich noch die nicht verwendeten Updates und die nicht erforderlichen Update-Dateien vornehmen.
Wenn die Ergebnisse des Aufräumens weit hinter den Erwartungen bleiben, dann kann dies daran liegen, dass zahlreiche 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.
Möchte man die Bereinigung über die Aufgabenplanung 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.
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
Verwandte Beiträge
- Installation von WSUS auf Server 2016 planen: Systemvoraussetzungen, Storage-Optionen, Workgroups
- WSUS-Verbindungsfehler: Zertifikat erneuern
- Windows 11 23H2: Die wichtigsten Neuerungen für professionelle Anwender
- Produkte für Windows 11 in WSUS auswählen
- Import von Updates nach WSUS erfolgt nun mit PowerShell
Weitere Links
6 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?
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.
Hallo Wolfgang
der Befehl für den Timeout Datenbank zu erhöhen ist ja aktuell.
Leider bekomme ich beim Aufruf den Fehler Unerwartetes Token "-I" in Ausdruck oder Anweisung. Dasselbe auch für "-S"
Musste den Pfad an meine Installation anpassen, da war die "Nummer" nicht 110 sondern 170 (SQL 2022)
Woran scheitere ich?
Danke und Gruss, Markus