Tags: WSUS, Troubleshooting, PowerShell
Microsoft liefert nicht alle Updates an WSUS aus, es fehlen vor allem solche, die nicht besonders dringlich erscheinen. Sie können aber von Hand in den WSUS-Server importiert werden. Die auf dem Internet Explorer beruhende Methode funktioniert aber allzu oft nicht mehr, stattdessen kann man zu PowerShell greifen.
Die WSUS-Konsole sieht für den Import von Updates einen eigenen Befehl im Kontextmenü des Servers vor. Führt man ihn aus, dann öffnet er den Web-Browser und lädt die Startseite des Microsoft Update Catalog, wo man nach den gewünschten Updates suchen kann.
Wenn jedoch, wie heute auf den meisten PCs üblich, nicht der Internet Explorer als Standard-Browser konfiguriert ist, dann stößt man schon hier auf das erste Hindernis. Denn der Transfer zum WSUS verlangt ein ActiveX-Control, das in keinem anderen Browser läuft.
Öffnet der Befehl also Chrome oder Edge, dann muss man im nächsten Schritt den IE manuell starten, indem man ihn in einer administrativen Eingabeaufforderung aufruft:
"C:\Program Files\Internet Explorer\iexplore.exe"
Anschließend kopiert man die URL aus dem Browser, der durch den Import-Befehl geöffnet wurde, in den IE. Falls das ActiveX-Control für den Update Catalog noch nicht installiert ist, sollte man nun Gelegenheit erhalten, das nachzuholen.
Danach kann man das Update suchen, welches man importieren möchte. Im Suchergebnis erscheint neben den Treffern die Schaltfläche Hinzufügen, um die betreffenden Updates in den Warenkorb zu übernehmen. Bei allen anderen Browsern erhält man hier nur einen Download-Button.
Wenn man anschließend den Auswahlkorb über den Link oben rechts öffnet, dann sollte man eine Liste mit den zuvor ausgewählten Updates sehen. Über der Tabelle befindet sich die Checkbox Direkt importieren in Windows Server Update Services, die standardmäßig aktiviert ist. Durch den Klick auf die Schaltfläche Importieren würde man den Vorgang abschließen.
In der Praxis kommt es aber häufig vor, dass der IE die folgende Fehlermeldung anzeigt:
"Dieses Update kann nicht in Windows Server Update Services importiert werden. Ursache: es ist nicht mit Ihrer Version von WSUS kompatibel"
Den Link Weitere Informationen kann man in diesem Fall getrost ignorieren.
Um dieses Problem zu vermeiden, kursiert in einigen Foren der Tipp, in der URL, die der Import-Befehl anfangs im Browser öffnet, den Parameter Protocol=1.20 durch Protocol=1.80 zu ersetzen. Bei meinem Versuch führte dies aber nicht zum Erfolg.
Angesichts der Tatsache, dass der Import aus der WSUS-Konsole über den IE derart fehleranfällig ist, empfiehlt sich der Einsatz eines anderen Verfahrens. Dafür spricht auch, dass der Internet Explorer ein Auslaufmodell ist und in vielen Umgebungen die Installation von ActiveX nicht erwünscht und oft auch nicht möglich ist.
Updates über PowerShell importieren
Die Alternative lautet auch hier PowerShell. Allerdings macht es Microsoft dem Anwender nicht leicht, an die benötigten Informationen für den Import zu kommen. Objekte vom Typ UpdateServer enthalten die Methode ImportUpdateFromCatalogSite, die ihrerseits den Namen der Update-Datei sowie die ID des Updates benötigt.
Nachdem man den Namen der Datei nach dem manuellen Download schnell ermittelt, zeigt der Katalog die ID nirgendwo in den Detailinformationen des Updates. Wenn man allerdings auf den Link mit der Beschreibung des Updates klickt, dann öffnet sich ein Popup-Fenster, in dessen URL man die ID erkennen kann.
ID der Updates mit PowerShell ermitteln
Anstatt sich durch die Details jedes Updates und deren URL zu quälen, kann man die gesamte Liste mit ein paar Zeilen PowerShell herunterladen und auswerten:
Nach dem Download der Suchergebnisse für eine bestimmte KB-Nummer mit Invoke-WebRequest filtert der darauf folgende Ausdruck die Bezeichnungen und die IDs aus der Web-Seite, zeigt sie in einer grafischen Tabelle an und gibt den gewählten Eintrag schließlich aus.
Falls man diese Aktion unter Server Core ausführt, dann steht dort der IE nicht zur Verfügung und man muss Invoke-WebRequest daher mit dem Schalter UseBasicParsing aufrufen.
Anschließend fehlt aber der direkte Zugriff auf viele DOM-Elemente, so dass man sich beim Filtern mit einem regulären Ausdruck behelfen muss. Out-GridView steht auch nicht zur Verfügung, so dass man nur eine einfache Ausgabe mittels Format-List erhält.
Mit WSUS verbinden
Im nächsten Schritt stellt man eine Verbindung mit dem WSUS-Server her. Arbeitet man direkt auf diesem, dann reicht ein
$wsus = Get-WsusServer
In der Regel wird man aber von einer Workstation auf den WSUS-Server zugreifen, so dass man zusätzliche Angaben benötigt. Falls man für diesen eine SSL-Verbindung eingerichtet hat, würde der Befehl in der Regel so aussehen:
$wsus = Get-WsusServer -Name <WSUS-FQDN> -PortNumber 8531 -UseSsl
Anschließend ruft man die oben erwähnte Import-Funktion auf:
$wsus.ImportUpdateFromCatalogSite('<Update-ID>', '<UpdateDatei.msu>')
Die ID kann man aus dem Output des obigen Scripts oder der URL des Katalog-Popups entnehmen. Für die Datei erwartet die Funktion den Namen mit dem vollständigen Pfad.
Verbindungsfehler
Nach dem Abschicken des Befehls stehen die Chancen gut, dass er mit dieser Fehlermeldung scheitert:
Ausnahme beim Aufrufen von "ImportUpdateFromCatalogSite" mit 2 Argument(en): "Die zugrunde liegende Verbindung wurde geschlossen: Unerwarteter Fehler beim Senden..
Der Grund liegt offenbar darin, dass PowerShell die Verbindung über TLS 1.0 herstellen möchte, was der WSUS-Server seit geraumer Zeit verweigert. Da PowerShell auf dem .NET-Framework beruht, muss man für dieses eine starke Verschlüsselung erzwingen. Dies erreicht man, indem man auf dem WSUS-Server folgenden Registry-Eintrag setzt:
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /V SchUseStrongCrypto /T REG_DWORD /D 1
Damit die Änderung wirksam wird, sollte man den Server neu starten. Anschließend müsste der Update-Import nach WSUS klappen.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
Weitere Links
3 Kommentare
Vielen Dank für diese sehr gute Anleitung!
Microsoft hätte es den WSUS-Admins echt leichter machen können!
Dank Hr. Sommergut kann man damit sehr gut umgehen, auch wenn es mehr Arbeit als sonst mit sich bringt.
Auch von mir vielen Dank für diesen Artikel (und für Andere auf dieser Site). Ich habe ein Update manuell importiert. Es wird aber von den Clients nicht angefordert. Muss ich das Update erst genehmigen? Oder wie kriege ich das auf die Clients drauf?
Lieber Wolfgang,
heuer erwähnenswert ist ein kostenfreies PowerShell Modul für die Aufgabe von MVP Adam Marshall
(ajtek WAM für WSUS).
Es ist in der PowerShell Gallery verfügbar.
Siehe:
https://techcommunity.microsoft.com/t5/windows-server-for-it-pro/how-to-...