Sicherheitshinweis

Die hier bereitgestellten Skripte sind stets auf eigene Gefahr anzuwenden!
Daher immer erst mit einem nicht-kritischen System oder in einer Testumgebung ausführlich testen!


Einleitung

„Jeder kennt es, viele stöhnen darüber“,… die einen Windows Server Update Services (WSUS) betreuen. Es geht kurz um, um die WSUS-Datenbankeintrags- (Metadaten) Bereinigung eines nicht mehr benötigten „Produktes“ und der dazugehörigen Updatedateien. Sprich: Die nicht mehr aktivierten und die somit nicht mehr benötigten Updatedateien, verbleiben weiterhin in der WSUS-Datenbank. Beispiel: Produkt wird im Unternehmen nicht mehr eingesetzt!

Es kann generell viel über die veraltete WSUS-Architektur bzw. -Entwicklung diskutiert werden, aber schlussendlich hilft es dem einen oder anderem Administrator nicht, der verzweifelt versucht, den WSUS-Betrieb wieder in den Griff zu bekommen!

Da ich immer wieder mit diesem Thema zu tun habe und auch im aktuellen Kundenprojekt, will ich hier meine bisherigen Ergebnisse mit Euch teilen. Denn, es ist nicht wie so oft empfohlen, IMMER eine Re-Installation des WSUS-Dienstes notwendig, nur um die WSUS-Datenbank und / oder den WSUS-Content zu restrukturieren/verkleinern!


Kurzer Hintergrund

WSUS denkt grundsätzlich nicht daran, sich selbst zu optimieren, in dem die nicht mehr selektierten/aktivierten Datenbankeinträge (Medadaten) komplett aus der WSUS-Datenbank automatisch entfernt werden. Somit muss diesem Prozess nachgeholfen werden. Hierzu können die folgenden Codezeilen beitragen!


Vorbereitungen

  • Sich bewusst machen, welche Produkte aus der WSUS-Datenbank entfernt werden sollen.
  • Entsprechende Windows Updates müssen bereits in der WSUS-Konsole abgelehnt sein.
  • Die betreffenden PowerShell-Befehle auswählen und kopieren.
  • Die betreffenden PowerShell-Befehle müssen stets mit administrativen Berechtigungen ausgeführt werden.

Verbindungsparameter

Clear-Host
[String]$WsusServer = [System.Net.Dns]::GetHostByName($env:computerName).HostName
[Boolean]$UseSSL    = $True
[Int32]$PortNumber  = 8531
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer($WsusServer,$UseSSL,$PortNumber)

Verbindungsparameter ggf. anpassen, falls keine verschlüsselte Verbindung mit Eurer Umgebung aufgebaut werden sollte.

Unverschlüsselt:
[Boolean]$UseSSL = $False
[Int32]$PortNumber = 8530


Produkte auflisten

Komplette Ansicht aller verfügbaren Produkte:

(Get-WsusServer).GetUpdateCategories() | 
select Type, Title | Out-GridView

Ansicht der aktuell aktivierten Produkte:

(Get-WsusServer).GetSubscription().GetUpdateCategories() | 
select Type, Title | Out-GridView

Produkte suchen:

Get-WsusProduct | 
Where {$_.Product.Title -like "*Edge*"}

Produkte aus der Datenbank ablehnen und entfernen

Produkte ablehnen:

Get-WsusUpdate -Approval AnyExceptDeclined | 
where {$_.Update.Title -like "*Microsoft Edge*"} | 
Deny-WsusUpdate

Bevor die Produkte aus der Datenbank entfernt werden können, ist die Ablehnung der betreffenden Updatedateien zwingend notwendig, sonst wird das Entfernen der Updatedateien verweigert!

Produkte entfernen:

# [DE]
$wsus.GetUpdates()  | 
Where {$_.ProductTitles -eq "Microsoft Edge"} | 
ForEach-Object {$wsus.DeleteUpdate($_.Id.UpdateID);Write-Host $_.Title "ist gelöscht."}

# [EN]
$wsus.GetUpdates()  | 
Where {$_.ProductTitles -eq "Microsoft Edge"} | 
ForEach-Object {$wsus.DeleteUpdate($_.Id.UpdateID);Write-Host $_.Title "is removed."}

Das Löschen der Datensätze in der WSUS-Datenbank (Metadaten), kann unter Umständen sehr lange dauern.

Nach dem erfolgreichen entfernen der Metadaten zum ausgewählten Produkt, kann mit der WSUS-Serverbereinigung auch der WSUS-Content erfolgreich entfernt werden und der WSUS gibt wieder den so dringend benötigten Festplattenplatz frei!

Vorteil an dieser Art der Bereinigung ist, dass hierfür direkt aus der PowerShell heraus, die notwendigen Aktionen durchgeführt werden können… Empfehlenswert ist jedoch immer, den Index der WSUS-Datenbank in regelmäßigen Abständen oder speziell nach solchen Aktionen sich wieder neu aufbauen zu lassen!


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Time limit is exhausted. Please reload CAPTCHA.