Tags: WSUS, Tools, PowerShell
Die meisten Unternehmen nutzen die Windows Server Update Services (WSUS), um Updates für Windows, Office und andere Microsoft-Produkte zu verteilen. Dennoch fehlen ihnen bis heute die Funktionen, um die unerlässlichen Wartungsaufgaben zu automatisieren. WSUS Automated Maintenance schließt diese Lücke.
Das zügige Installieren von Patches ist bekanntlich ein wesentlicher Beitrag zur der IT-Sicherheit. In den meisten Microsoft-Umgebungen übernehmen die WSUS diese kritische Aufgabe. Sie leiden allerdings nicht erst seit der Ausrichtung von Microsoft auf Cloud-Dienste wie Windows Update for Business (WUfB) unter zahlreichen Defiziten. Viele Mängel begleiten Admins schon seit Jahren.
Regelmäßige Wartung für störungsfreien Betrieb nötig
Diese bestehen nicht nur in einer unflexiblen und umständlichen Verwaltung der Verteilerringe, der fehlenden Suchfunktion oder den limitierten Reporting-Fähigkeiten. Das größte Problem für Admins sind die laufend nötigen Wartungsarbeiten, die sich kaum automatisieren lassen.
Wenn man diese vernachlässigt, dann verursacht ein WSUS-Server früher oder später Probleme. Dazu zählen etwa enormer Verbrauch von Speicherplatz und extrem eingeschränkte Performance mit ständigen Verbindungsabbrüchen der Konsole.
Bordmittel und Behelfslösungen für die Wartung
Zu den Bordmitteln von WSUS gehört der Wizard for Sserver Cleanup, welcher nicht mehr benötigte Updates oder inaktive Clients entfernen soll. Diesen muss man jedoch regelmäßig von Hand starten und er ist schnell überfordert, wenn seit der letzten Ausführung viele Updates aufgelaufen sind. Er bricht seine Tätigkeit dann ab.
Für andere Aufgaben, wie das Reindexieren der Datenbank, kann man sich ein SQL-Script von GitHub herunterladen und dieses über eine geplante Aufgabe regelmäßig ausführen. Um ein Backup der Datenbank darf man sich dann extra kümmern.
WAM mit vordefinierten Wartungsroutinen
Diese und viele weitere Aufgaben der WSUS-Wartung kann AJ Tek dem Admin mit seinem WSUS Automated Maintenance (WAM) abnehmen. Eine regelmäßig ausgeführte Task räumt den WSUS-Server auf und hält ihn in einem funktionstüchtigen Zustand, wobei der Admin kaum noch eingreifen muss.
Nach seiner Ausführung, egal ob zeitgesteuert oder manuell von der Kommandozeile, generiert das Tool auf Wunsch einen Report im HTML- oder Textformat über die erzielten Ergebnisse. Diesen kann man einfach speichern oder sich via Mail zuschicken lassen.
WAM enthält insgesamt 14 Routinen für Wartungsaufgaben (der Hersteller bezeichnet sie als Streams), die in verschiedenen Intervallen ausgeführt werden. Sie sind in der ausführlichen Dokumentation genau beschrieben. Hinzu kommen mehrere Utilities, die der Admin bei Bedarf nutzen kann (etwa zur Konfiguration des Application Pool Memory oder von IIS-Einstellungen).
Manche Streams sollen täglich laufen, andere aber nur wöchentlich, monatlich oder gar nur einmal im Quartal. Die Vorgaben von WAM sind hier plausibel und dürften für die meisten Umgebungen passen. Bei Bedarf lässt sich die Frequenz für jeden Stream individuell einstellen.
WSUS-Optimierung zum Auftakt
Am Ende der Installation bietet die Software an, die Routine FirstRun auszuführen. Diese startet Aktionen, die man in der Regel nur einmal ausführen muss. Dazu zählen das Einrichten der geplanten Aufgabe für WAM sowie die Optimierung der Datenbank, indem das Tool SQL Indexes zu SUSDB hinzufügt. AJ Tek zufolge führt dies zu einer erheblichen Verbesserung der WSUS-Performance.
Microsoft sieht diese Maßnahme nur vor, wenn man in SCCM oder Endpoint Manager die entsprechende Option aktiviert, bietet sie aber für WSUS alleine aus unerfindlichen Gründen jedoch nicht an. Nutzt man WAM, dann sollte man diese Einstellung in SCCM nicht konfigurieren.
Außerdem führt FirstRun einige Aufgaben aus, die nachher nur einmal im Monat oder pro Quartal laufen. Dazu zählen etwa ein Backup der Datenbank, das Kürzen der IIS-Logs oder das Löschen von Treibern.
Einer der Streams mit der Bezeichnung ServerCleanupWizard führt das PowerShell-Äquivalent zum erwähnten Assistenten für die WSUS-Bereinigung aus, per Vorgabe mit FirstRun und dann jeden Tag. Diese Variante vermeidet den häufigen Timeout, der zum Abbruch der Routine führt, wenn man sie aus der WSUS-Konsole startet.
Im Gegensatz zum WSUS-eigenen Assistenten kann man bei WAM zudem die Zahl der Tage festlegen, nach denen inaktive Clients entfernt werden.
Entfernung unnötiger Updates
Die wohl wichtigste wiederkehrende Aufgabe eines solchen Tools besteht darin, die Unmengen an nicht benötigten, veralteten oder ersetzten Updates abzuräumen. Die Bordmittel sind hier nur von beschränktem Nutzen, vor allem um Updates von Produkten los zu werden, die man eine Zeitlang bezogen und dann abgewählt hat.
Unnötige Speicherfresser sind besonders Updates, die zwar zu den gewählten Produkten gehören, aber für Plattformen gedacht sind, die kaum jemand nutzt. Das gilt etwa für Itanium, ARM64 oder zunehmend auch für 32-Bit-Versionen von Windows.
Bei Windows 10 kommt hinzu, dass man Updates für Releases nicht mehr braucht, deren Support Microsoft bereits eingestellt hat oder die man im Unternehmen nicht mehr nutzt.
WSUS selbst sieht keine Möglichkeit vor, bestimmte Updates für ein Produkt gezielt zu entfernen. Dafür müsste man sich wieder mit Scripts aus dem Internet behelfen, um WSUS-Plattenplatz zurückzugewinnen.
Während man dort die Zeichenketten zum Filtern bestimmter Versionen erst selbst zusammenstellen muss, kann man in WAM komfortabel über die GUI auswählen, welche Updates für ein abonniertes Produkt nicht erwünscht sind.
Das betrifft nicht nur Windows, sondern etwa auch Edge, wo man ungefragt den Dev- und Beta-Channel dazubekommt. Auch Office-Updates lassen sich abhängig von der Architektur entfernen.
Ersetzte Updates löschen
Ein großes Potenzial zur Rückgewinnung von Speicherplatz stellen Superceded Updates dar, also solche, die durch neuere vollständig ersetzt werden. Der WSUS-Assistent räumt diese erst ab, nachdem man das aktuellste Update genehmigt und die ersetzten nicht freigegeben hat.
Außerdem müssen 30 Tage vergangen sein, seit die vorigen Updates zuletzt von einem Client angefordert wurden. WAM beseitigt diese Updates schon, sobald der Admin die neueste Version für die Installation genehmigt.
Installation
Bevor man WAM auf einem WSUS-Server einrichten kann, müssen mehrere Voraussetzungen erfüllt sein. Dazu gehören Windows Server ab 2008 R2, PowerShell 4, der ODBC-Treiber und die Command Line Utilities für SQL Server. Die Website des Herstellers schlüsselt die Anforderungen nach OS-Version auf und verlinkt auf die Download-Quellen bei Microsoft. Das SQL Server PowerShell-Modul installiert das WAM-Setup selbst.
Das Konto, unter dem man das Setup ausführt, sollte administrative Rechte auf dem WSUS-Server haben, in seinem Kontext läuft nachher auch die geplante Aufgabe. AJ Tek empfiehlt die Verwendung eines Service Accounts.
Das Setup lässt sich auch unbeaufsichtigt ausführen, in der Regel wird man aber die interaktive Methode über die GUI bevorzugen. Diese lässt sich auch unter Server Core nutzen. Der Wizard bietet die Wahl zwischen Standard- und erweiterter Installation an. Erste dürfte für die meisten Umgebungen passen.
Beim Dialog zur Konfiguration des Mail-Versands sind die Parameter für outlook.com sowie GMail schon vorgegeben. Wenn man für diese Dienste eine Multifaktor-Authentifizierung aktiviert hat, dann benötigt man anstatt des regulären ein App-Passwort.
Nachdem man dieses für das jeweilige Konto erzeugt hat, sollte man einige Zeit warten, bis es vom Mail-Service akzeptiert wird. Andernfalls kassiert man den Fehler
5.7.57 Client not authenticated to send mail
Wenn man das Setup erneut startet, nachdem man WAM bereits installiert hat, dann wechselt es automatisch in den erweiterten Modus, wo man alle Einstellungen im Detail konfigurieren kann. Nach dessen Abschluss sollte man aufpassen, dass man nicht versehentlich erneut FirstRun startet, das im letzten Dialog standardmäßig aktiviert ist.
Wenn man die Konfiguration nach der Installation anpassen möchte, dann findet sich ein entsprechender Link zur Configuration.ps1 im Startmenü. Falls man Server Core für WSUS verwendet, dann muss man sie unter "%ProgramData%\AJ Tek\WAM" von Hand öffnen. In der nächsten Version soll es dann möglich sein, das Setup nochmals im Advanced Mode zu durchlaufen, um die Einstellungen zu ändern.
Fazit
WAM rüstet alle erforderlichen Routinen zur Automatisierung der WSUS-Wartung nach, die eigentlich Microsoft schon längst in das Produkt hätte integrieren müssen. Da WSUS aber schon bei den letzten Updates keine neuen Funktionen erhielt, dürften alle bekannten Mängel auch in Server 2022 erhalten bleiben.
Wenn die Systemvoraussetzungen gegeben sind, fällt die Installation von WAM sehr einfach. Die nachträgliche Anpassung der Einstellungen lässt sich über das Bearbeiten der gut dokumentierten Konfigurationsdatei erledigen. Reports per E-Mail informieren regelmäßig über die ausgeführten Wartungsaufgaben.
Angesichts der Zeit, die Admins mit der WSUS-Wartung verschwenden können, sind die 60 Dollar für WAM pro Jahr und Server gut angelegt. Die jährliche Gebühr für Downstream-Server kostet 30 Dollar.
Täglich Know-how für IT-Pros mit unserem Newsletter
Ähnliche Beiträge
- WSUS-Bereinigung als geplante Aufgabe ausführen
- ScriptRunner Portal Edition R4: Support für Microsoft Graph, überarbeitetes Portal, zentrale Execution-Policy
- PowerShell 7 über Windows Update oder WSUS aktualisieren
- Produkte und Klassifizierungen in WSUS mit PowerShell konfigurieren
- PowerShell-Scripts kompilieren mit Win-PS2EXE
Weitere Links
5 Kommentare
Hallo,
hat jemand dieses Produkt in einer Produktivumgebung mit deutschem WSUS erfolgreich getestet?
Zumindest mit dem Vorgänger PowerShell Script von Adam habe ich erfolgreich 2 WSUS Datenbanken dauerhaft unbrauchbar gemacht. Da eine Neuinstallation flott geht, war das nicht soo schlimm.
Alternativ mit Bordmitteln und PowerShell die unerwünschten Updates ablehnen, die nicht benötigten Abokosten für WAM dann bitte auf mein Konto :-)
Import-Module UpdateServices
$wsusserver = (Get-WsusServer -Name <ServerAdresse> -PortNumber <Port> -UseSsl)
get-wsusupdate -UpdateServer $wsusserver -Approval AnyExceptDeclined | where {$_.Update.Title -like "*Vorschau*" -or
$_.Update.Title -like "*ARM64*" -or
$_.Update.Title -like "*Version 2004*" -or
$_.Update.Title -like "*Version 1909*" -or
$_.Update.Title -like "*Version 1903*" -or
$_.Update.Title -like "*Version 1809*" -or
$_.Update.Title -like "*Version 1803*" -or
$_.Update.Title -like "*Version 1709*" -or
$_.Update.Title -like "*Version 1703*" -or
$_.Update.Title -like "*Version 1607*" -or
$_.Update.Title -like "*Version 1511*" -or
$_.Update.Title -like "*Edge-Dev*" -or
$_.Update.Title -like "*Edge-Beta*" -or
$_.Update.Title -like "*SkyDrive Pro*" -or
$_.Update.Title -like "*x86-basierte*" -or # Windows
$_.Update.Title -like "*x86-based*" -or # Windows
$_.Update.Title -like "*x86-Editionen*" -or # Edge-Chrome
$_.Update.Title -like "*Windows Server 2016 (1709)*" -or
$_.Update.Title -like "*Windows Server 2016 (1803)*" -or
$_.Update.Title -like "*Windows Server 2019 (1809)*" -or
$_.Update.Title -like "*Entfernen bösartiger Software*" -or
$_.Update.Title -like "*64-Bit-Edition*" -or #Office
$_.Update.Title -like "*64-Bit Edition*" -or #Office
$_.Update.Title -like "*Groove Server*" -or
$_.Update.Title -like "*Project Server*" -or
$_.Update.Title -like "*Search Server*" -or
$_.Update.Title -like "*Sharepoint Foundation*" -or
$_.Update.Title -like "*Sharepoint Server*" -or
$_.Update.Title -like "*Sharepoint Enterprise Server*" -or
$_.Update.Title -like "*Web Applications*" -or
$_.Update.Title -like "*Office Web App*" -or
$_.Update.Title -like "*Business Productivity Server*" -or
$_.Update.Title -like "*Upgrade von Windows 7 und 8.1 auf Windows 10*"} | Deny-WsusUpdate
Und wer den Defender einsetzt gleich noch die Viren-Definitionen ablehnen/genehmigen:
$defupd = get-wsusupdate -UpdateServer $wsusserver -Approval AnyExceptDeclined | where {$_.Update.Title -like "*Defender*"}
$defupd | where {$_.Update.IsSuperseded}|Deny-WsusUpdate
$defupd | where {$_.ComputersNeedingThisUpdate -gt 0 -and -not $_.Update.IsSuperseded} | approve-wsusupdate -Action Install -TargetGroupName "<TargetGroupName einsetzen>"
Die Parameter (angegeben mit Kleiner-als und Größer-als) wurde leider entfernt, betrifft die Zeile "$wsusserver = ..." und die letzte Zeile bei "TargetGroupName"
Martin, das Tool von AJ Tek macht schon ein bisschen mehr als nur Updates abzulehnen, zum Beispiel die Datenbankwartung und das Versenden von Reports. Das kann man natürlich auch selbst mit PowerShell hinbasteln. Die Frage ist nur, ob es einem die 4 Euro pro Monat und Server wert ist und man deswegen auf eine ausgereifte und regelmäßig gewartete Lösung verzichten will.
Keine Frage, dass da noch etwas mehr dahintersteckt, als mein dahingerotzter PowerShell-Zweizeiler. Meine Kritik an so Tools wäre eher, dass dort in Dienste eines anderen Herstellers (hier: MS) eingegriffen wird, ohne dass der Anwender/Kunde die Funktion der "magischen Soße" einfach so einsehen kann.
Wenn ich schon irgendwas auf meinen Server loslasse, würde ich schon wissen wollen, was es genau tut oder wer bei Fehlfunktionen die Haftung übernimmt. Bei Fehlern in MS-Updates (hat hier einer Druckserver oder Exchange gesagt?) krieg ich ja theoretisch MS dran, bei solchen Dienstprogrammen sagt MS einfach: Fremdprogramm genutzt, welches nicht offiziell zugelassen ist.