Updates in WSUS importieren mit Internet Explorer oder PowerShell


    Tags: , ,

    Updates von Microsofts Catalog importierenMicrosoft liefert nicht alle Updates an WSUS aus, es fehlen vor allem solche, die nicht beson­ders dring­lich er­scheinen. Sie können aber von Hand in den WSUS-Server impor­tiert werden. Die auf dem Internet Explorer beruhende Methode funk­tioniert aber allzu oft nicht mehr, statt­dessen kann man zu PowerShell greifen.

    Die WSUS-Konsole sieht für den Import von Updates einen eigenen Befehl im Kontext­menü 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.

    Befehl für den Import von Updates aus dem Microsoft Catalog

    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 Eingabe­aufforderung 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.

    Startet man den IE mit administrativen Rechten, dann lässt sich das ActiveX für den Update-Katalog installieren.

    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.

    Suchergebnis im Update-Katalog mit der Option, Updates in den Warenkorb hinzuzufügen

    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 standard­mäß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.

    Im Auswahlkorb kann man den Import nach WSUS aktivieren. Häufig scheitert dieser aber mit einer Fehlermeldung.

    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 fehler­anfällig ist, empfiehlt sich der Einsatz eines anderen Verfahrens. Dafür spricht auch, dass der Internet Explorer ein Auslauf­modell 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 Detail­informationen 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.

    IDs der gewünschten Updates mit PowerShell aus dem Katalog abrufen

    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 WSUS-Server lehnt die unsichere Verbindung durch PowerShell ab.

    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

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Wolfgang Sommergut
    Wolfgang Sommergut hat lang­jährige Erfahrung als Fachautor, Berater und Konferenzsprecher zu ver­schiedenen Themen der IT. Daneben war er als System­admini­stra­tor und Consultant tätig.
    // Kontakt: E-Mail, XING, LinkedIn //

    Ähnliche Beiträge

    Weitere Links

    1 Kommentar

    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.