15

WSUS bereinigen per PowerShell Script

Der Microsoft WSUS ist ein nicht mehr wegzudenkender Server in größeren Netzwerken. Dieser ist für die Genehmigung und Verteilung von Windows Updates zuständig. Oftmals läuft der Speicherplatz der WSUS Datenbank voll, weil der Microsoft WSUS sehr viele alte Updates nicht automatisch löscht. Dies sollte man aber automatisieren. Man kann mit PowerShell seinen WSUS bereinigen lassen – ganz automatisiert. Um den WSUS aufräumen zu können und alte Updates automatisch löschen zu lassen, so benötigt man nur wenige Zeilen Code. 🙂

wsus server bereinigen

Man kann natürlich den Server Cleanup Wizard (Bereinigung) zum WSUS bereinigen ausführen, allerdings muss man das immer “händisch” anstoßen. Außerdem wird das dann auch oft vergessen. Deswegen sollten wir den WSUS dazu bringen, automatisch Updates löschen zu lassen. Nur wie? Natürlich per Aufgabenplanung und PowerShell!

 

WSUS bereinigen – PowerShell Script

Mit folgenden PowerShell Script können automatisiert alte Updates und Computerobjekte gelöscht werden. So wird der WSUS Server aufgeräumt und von alten Files bereinigt. Im Server Cleanup Wizard kann man folgende Kategorien löschen lassen.

  • Unused updates and update revisions
  • Computers not contacting the server
  • Unneeded update files
  • Expired Updates
  • Superseded updates

Diese Parameter können natürlich in PowerShell auch gewählt werden. In Zeile 28-33 werden diese Punkte konfiguriert. Möchte man eine Update-Kategorie abwählen, so ändert man in dieser Zeile von “$true” auf “$false” ab.

(wsuscleanup.ps1 – Powershell)

<#
.SYNOPSIS
  WSUS bereinigen
.DESCRIPTION
  Fuehrt die WSUS bereinigung mit PowerShell aus
.NOTES
  Version:        1.0
  Author:         www.ITnator.net | Johannes Huber
  Creation Date:  14.02.2017
.EXAMPLE
  Output File in Zeile 24 anpassen
#>
write-host " "
write-host " "
write-host " "
write-host "###################################"
write-host "##### RUNNING SERVER-CLEANUP ######"
write-host "###################################"
write-host " "
write-host " "
write-host " "
$outFilePath = 'C:\JOBS\WSUS_cleanup\wsusClean.txt'
[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | out-null
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer();
$cleanupScope = new-object Microsoft.UpdateServices.Administration.CleanupScope;
$cleanupScope.DeclineSupersededUpdates = $true
$cleanupScope.DeclineExpiredUpdates = $true
$cleanupScope.CleanupObsoleteUpdates = $true
$cleanupScope.CompressUpdates = $true
$cleanupScope.CleanupObsoleteComputers = $true
$cleanupScope.CleanupUnneededContentFiles = $true
$cleanupManager = $wsus.GetCleanupManager();
$cleanupManager.PerformCleanup($cleanupScope) | Out-File -FilePath $outFilePath
write-host "###################################"
write-host "##### SERVER-CLEANUP COMPLETE #####"
write-host "###################################"
write-host " "
write-host " "
write-host " "

 

Nun müssen wir nur noch das Script 1x in der Woche per Windows – Aufgabenplanung ausführen lassen. Hierzu werden erhöhte Rechte benötigt – nicht vergessen!

Nachdem das PowerShell Script ausgeführt wurde, sollten alte Updates und alte Dateien gelöscht worden sein. Auf Wunsch – je nach Konfiguration – sollten auch alte Computerobjekte gelöscht worden sein. Somit ist der WSUS aufgeräumt und alte Updates bereinigt.

Johannes Huber
 

In seiner Freizeit macht Johannes nichts lieber, als für ITnator Beiträge zu schreiben. Input bekommt er hierfür von Problemen in der IT Administration von Servern, Clients und vielen weiteren IT Komponenten.

Click Here to Leave a Comment Below 15 comments