Windows-Updates per PowerShell automatisch ausrollen

Ordentlich gepatchte Windows-Systeme sind eine wichtige Säule der IT-Sicherheit. Diese schrittweise Anleitung zeigt, wie Admins die PowerShell als Update-Werkzeug nutzen können.

Das Patchen von Windows-Systemen gehört zweifelsohne zu den sehr wichtigen, aber nur bedingt spannenden Aufgaben eines System-Administrators. Windows-Rechner erhalten ihre Updates über Microsoft Update. Und es existieren eine ganze Reihe von Werkzeugen, die Administratoren beim Aktualisieren der Systeme unterstützen.

WSUS (Windows Server Update Services) steht da als populäre Lösung kostenlos zur Verfügung, bietet aber vielleicht nicht für alle Administratoren genügend granulare Konfigurationsmöglichkeiten. System Center Configuration Manager (SCCM) ist da ein mächtiges Werkzeug und erlaubt es Admins, hochgradig angepasste Patch-Rollouts zu erstellen. Wer SCCM aber richtig nutzen will, muss sich eingehend damit beschäftigen. Zudem kann diese Lösung mit erheblichen Kosten verbunden sein. Unabhängig von der verwendeten Lösung, setzen alle auf den integrierten Windows Update Agent, um eine Verbindung zu Microsoft herzustellen und neue Updates zu erhalten.

Wenn das eigene Budget kein kommerzielles Windows-Patching-Tool erlaubt und die kostenlosen Lösungen nicht die gewünschten Optionen bieten, gibt es die Möglichkeit, ein eigenes automatisiertes Verfahren anzuwenden. Der Hauptvorteil dabei ist, dass dies optimal an die eigenen Anforderungen angepasst werden kann. Aber hierfür ist spezifisches Fachwissen erforderlich und der Arbeitsaufwand ist nicht zu unterschätzen.

Der Windows-Update-Prozess

Bevor man sich an ein entsprechendes Tool wagt, ist es sinnvoll, sich mit den Details des Update-Prozesses zu beschäftigen:

  • Wie identifiziert und erreicht man die Systeme, die Updates benötigen?
  • Welche Quelle wird für die Updates genutzt?
  • Welche Updates sollen eingespielt werden?
  • Wie werden die Patches verteilt und installiert?

Es existieren unterschiedliche Herangehensweisen, um die einzelnen Punkte zu adressieren, in diesem Beispiel haben wir uns für folgende entschieden:

  • Systemauswahl: über die Organsationseinheit (OU) des Active Directory;
  • Update-Quelle: Microsoft Update;
  • Update-Auswahl: alle kritischen Updates; und
  • Patch-Bereitstellung und -verteilung: der Windows Update Agent wird per PowerShell und Fernzugriff aufgerufen

Mit Ausnahme der Patch-Quelle kann der Administrator alle Optionen zum Zeitpunkt des Patchens konfigurieren. Der Windows Update Agent nutzt die Registry oder ein Gruppenrichtlinienobjekt (GPO), um zu ermitteln, ob die Updates von Microsoft Update oder einem lokalen WSUS-Server stammen.

Windows-Update per PowerShell

Die Basis ist ein vom Autoren entwickeltes, vorkonfiguriertes PowerShell-Modul namens WindowsUpdate. Laden Sie das Modul herunter und installieren Sie es. Mit folgendem Befehl sehen Sie eine Liste der verfügbaren Befehle:

Get-Command -Module WindowsUpdate

Als nächstes wird eine Liste der zu aktualisierenden Computer abgefragt. In diesem Beispiel verwenden wir eine einzige Organisationseinheit eines Active Directory. Die Quelle kann alternativ aber auch eine Datenbank, eine CSV-Datei oder Excel-Tabelle sein. Wir nutzen hier das Active-Directory-Modul, das im Lieferumfang von Microsofts Remote System Administration Tools enthalten ist.

Nach der Installation dieses Moduls lassen sich die Computer des Active Directory mit dem Cmdlet Get-AdComputer abfragen. Um alle Computer in einer einzigen Organisationseinheit zu finden werden die Parameter SearchScope und SearchBase verwendet. Mit dem folgenden Befehl werden die Computer in der OU Server aus der Domäne mylab.local gefunden und ihre Namen zurückgegeben:

$computerToPatch = Get-AdComputer -SearchScope Base -SearchBase 'OU=Servers,DC=mylab,DC=local' | Select-Object -ExpandProperty Name

Als nächstes wird ein System direkt angesprochen. Es empfiehlt sich zunächst, den aktuellen Zustand des Systems zu ermitteln. Als Test für das Tool wird eine Get-Operation durchgeführt und der aktuelle Patch-Status ermittelt. Der folgende Befehl fragt den ersten Computer aus unserer Variable ab und findet alle verfügbaren Updates, die nicht installiert sind. Standardmäßig wird nur nach fehlenden Updates gesucht:

Get-WindowsUpdate -ComputerName $computersToPatch[0]

Wenn Sie das Ergebnis überprüft haben und die ermittelnden Updates für gut befinden, gilt es diese zu installieren. Mit dem Befehl Install-WindowsUpdate können Sie den Windows-Update-Agenten auf dem Remote-Computer dazu bewegen, die fehlenden Updates herunterzuladen und zu installieren:

Install-WindowsUpdate -ComputerName $computersToPatch[0] -ForceReboot

In diesem Fall ist zu beachten, dass der Neustart des Systems erzwungen wird, falls erforderlich. Standardmäßig versucht Install-WindowsUpdate nicht, den Computer neu zu starten, wenn ein Update dies erfordert.

Im nächsten Schritt lassen sich die Updates auf allen Zielrechnern installieren. Dafür lässt sich in der PowerShell eine ForEach-Schleife einsetzen, um durch jeden Computernamen im Array „$computersToPatch“ zu iterieren und Install-WindowsUpdate für jeden Computernamen auszuführen.

foreach ($computer in $computersToPatch) {

 

Install-WindowsUpdate -ComputerName $computer -ForceReboot

}

 

Die Schleife durchläuft jeden Computer in der Organisationseinheit Servers, prüft das System auf fehlende Patches, installiert diese und startet den Rechner neu, um den Update-Prozess abzuschließen.

Diese einfache Vorgehensweise zeigt, was mit einem kostenlosen PowerShell-Tool möglich ist. Der Ansatz lässt sich natürlich auf unterschiedlichste Weise an die eigenen Anforderungen anpassen.

Folgen Sie SearchSecurity.de auch auf Twitter, Google+, Xing und Facebook!

Nächste Schritte

Windows 10: Updates per WSUS zur Vefügung stellen

Das beste WSUS-Setup für verschiedene Umgebungen

Windows-Sicherheit: Einfache Sicherheitslücken schließen

Erfahren Sie mehr über Anwendungs- und Plattformsicherheit