In diesem HowTo geht es um die automatische Bereinigung der Windows Server Update Services (WSUS) unter Windows Server mit der PowerShell.
Für die Verwaltung der WSUS hat Microsoft ab Windows Server 2012 R2 eine Reihe neuer Cmdlets der PowerShell hinzugefügt. Die Auflistung aller dazugehörigen Cmdlets finden Sie in der TechNet Library. Darunter ist auch das Cmdlet Invoke-WsusServerCleanup, mit welchem man eine Bereinigung durchführen kann.
Um eine automatische WSUS Bereinigung durchzuführen, empfiehlt es sich, ein PowerShell Skript zu erstellen und dieses als geplante Aufgabe einmal wöchentlich zu triggern.
Ein einfaches PowerShell Skript mit automatischem E-Mail-Versand, könnte wie folgt aussehen:
# Variablen
$DateFormat = Get-Date -format yyyyMMdd-HH-mm
$Logfile = "D:\Logs\wsus-bereinigung-$DateFormat.log"
# WSUS Bereinigung durchführen
Invoke-WsusServerCleanup -CleanupObsoleteUpdates -CleanupUnneededContentFiles -CompressUpdates -DeclineExpiredUpdates -DeclineSupersededUpdates | Out-File $Logfile
# Mail Variablen
$MailSMTPServer = "EX01.domain.local"
$MailFrom = "administrator@domain.local"
$MailTo = "edv@domain.local"
$MailSubject = "${env:COMPUTERNAME} Bereinigung $DateFormat"
$MailBody = Get-Content $Logfile | Out-String
# Mail versenden
Send-MailMessage -SmtpServer $MailSMTPServer -From $MailFrom -To $MailTo -subject $MailSubject -body $MailBody -Encoding Unicode
Photo by Reza Namdari on Unsplash
Icon by icons8
Hallo Johannes,
vielen Dank für das HowTo: Windows Server 2012 R2 WSUS Bereinigung mit PowerShell!
Bei mir hat das Script so aber noch nicht ganz funktioniert. Es kam folgender Fehler:
Invoke-WsusServerCleanup : Eine Ausnahme vom Typ „Microsoft.UpdateServices.Administration.WsusInvalidServerException“ wurde ausgelöst.
In Zeile:6 Zeichen:1
+ Invoke-WsusServerCleanup -CleanupObsoleteUpdates -CleanupUnneededContentFiles -C …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (Microsoft.Updat…rCleanupCommand:InvokeWsusServerCleanupCommand) [Invoke-WsusServerCleanup], WsusInvalidServerException
+ FullyQualifiedErrorId : ServerIsInvalid,Microsoft.UpdateServices.Commands.InvokeWsusServerCleanupCommand
Ich habe den Befehl für die Bereinigung (Zeile 6) wie folgt angepasst:
Get-WsusServer -name ${env:COMPUTERNAME} -port 8530 | Invoke-WsusServerCleanup -CleanupObsoleteUpdates -CleanupUnneededContentFiles -CompressUpdates -DeclineExpiredUpdates -DeclineSupersededUpdates | Out-File $Logfile