Die Datenbank des WSUS-Servers sollte regelmäßig von nicht mehr benötigten Updates und Computern bereinigt werden. Diese Funktionen lassen sich beispielsweise aus der Windows Server Update Services MMC Konsole starten. Eine automatische regelmäßige Bereinigung lässt sich aber am besten über die Power Shell einrichten.
Power Shell – Invoke-WsusServerCleanup
Microsoft stellt und ein CMDlet für die WSUS-Server Bereinigung zur Verfügung:
Invoke-WsusServerCleanup [-CleanupObsoleteComputers] [-CleanupObsoleteUpdates] [-CleanupUnneededContentFiles] [-CompressUpdates] [-DeclineExpiredUpdates] [-DeclineSupersededUpdates] [-InformationAction <System.Management.Automation.ActionPreference> {SilentlyContinue | Stop | Continue | Inquire | Ignore | Suspend} ] [-InformationVariable <System.String> ] [-UpdateServer <IUpdateServer> ] [-Confirm] [-WhatIf] [ <CommonParameters>]
Parameter
- -CleanupObsoleteComputers: Computer bereinigen
- -CleanupObsoleteUpdates: Nicht mehr benötigte Updates bereinigen
- -CleanupUnneededContentFiles: Nicht benötigte Dateien bereinigen
- -CompressUpdates: Nicht mehr benötigte Revisionen der Updates bereinigen
- -DeclineExpiredUpdates: Abgelaufende Updates bereinigen
- -DeclineSupersededUpdate: Ersatzte Update bereinigen
WSUS-Server bereinigen
Der folgende Power Shell Befehl kombiniert sämtliche Bereinigungsmöglichkeiten:
Invoke-WsusServerCleanup -CleanupObsoleteUpdates -CleanupUnneededContentFiles -CompressUpdates -DeclineExpiredUpdates -DeclineSupersededUpdates
Regelmäßige WSUS Bereinigung
Mit der Windows Server Aufgabeplanung kann man Aktionen nach einem Zeitplan ausführen lassen. In unserem Fall werden wir ein Power Shell Script wöchentlich automatisch ausführen lassen.
WSUS-Server Cleanup Script
Das eigentlich Script führt letztendlich nur das Power Shell CMDlet Invoke-WsusServerCleanup aus. Parallel dazu wird noch unter C:\WSUS\ eine Log-Datei angelegt und das Ergebnis des Aufrufes per E-Mail an die Administratoren gesendet. Das eigentlich Script wird in diesem Beispiel unter C:\WSUS\WSUS_Cleanup.ps1 gespeichert.
$AktuellesDatum = Get-Date -format ddMMyyyy-HH-mm $Log = "C:\WSUS-$AktuellesDatum.log" Invoke-WsusServerCleanup -CleanupObsoleteUpdates -CleanupUnneededContentFiles -CompressUpdates -DeclineExpiredUpdates -DeclineSupersededUpdates | Out-File $Log $SMTPServer = "192.168.100.16" $Absender = "m.m@valentin-berlin.local" $Empfaenger = "m.m@valentin-berlin.local" $Betreff = "$AktuellesDatum - WSUS Cleanup Script" $ContentLog = Get-Content $Log | Out-String Send-MailMessage -SmtpServer $SMTPServer -From $Absender -To $Empfaenger -subject $Betreff -body $ContentLog -Encoding Unicode
Aufgaben hinzufügen
In der Aufgabenplanung kann man nun eine neue einfache Aufhaben anlegen.
Als nächstes muss der Zeitplan und die Aktion definiert werden:
Nun wird der eigentliche Power Shell Script Aufruf konfiguriert. Dabei wird die Power Shell gestartet (ich habe den vollständigen Pfad hinterlegt, weil es sonst manchmal zu Problemen kommen kann) und das eigentliche Script wird per Argument (Parameter) übergeben. Der Pfad zur Power Shell ist übrigens bei allen Versionen gleich.
Power Shell Aufruf:
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
Power Shell Arugemente (Parameter):
-noninteractive -command "&{C:\WSUS\WSUS_Cleanup.ps1}"
Status E-Mail
Bei jedem Durchlauf wird eine E-Mail mit dem Status verschickt. Das Ganze kann dann folgerdermaßen aussehen:
1 Gedanke zu “Windows Server 2012 – WSUS Server Cleanup”