Windows Server 2012 – WSUS Server Cleanup

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

Windows Server 2012 - WSUS Server Cleaup 1

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.

Windows Server 2012 - WSUS Server Cleaup 2

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}"

Windows Server 2012 - WSUS Server Cleaup 6

Status E-Mail

Bei jedem Durchlauf wird eine E-Mail mit dem Status verschickt. Das Ganze kann dann folgerdermaßen aussehen:

Windows Server 2012 - WSUS Server Cleaup 8

von Manuel M. 10. August 2015 @ 19:06

Kommentar hinzufügen

  • RSS
  • manuel m. on E-Mail
  • manuel m. on Faceboo
  • manuel m. on Google+