Gezieltes installieren von Windows Updates via WSUS
Jeden Monat fängt das Grauen von neuem an – MS Patchday.
Ich weiß nicht ob ich der einzige Admin auf dieser Welt bin, der in einem mittelständischen Unternehmen (wie Nils immer sagt 50 – 50.000 Mitarbeiter *g) arbeitet und keine Clientmanagementlösung (ConfigMgr o.ä.) im Einsatz hat.
Was bedeutet das für uns und unserer in ganz Deutschland verteilten Kassensysteme?
Patch´s in der Testumgebung testen – und dann ausrollen.
Aber wirklich auf alle Systeme gleichzeitig?
Viel geschickter wäre es doch diese gestaffelt auszurollen und dann auch noch immer erst mal nur eine Kasse pro Filiale. Und erst wenn das läuft noch Kasse 2,3 usw.
Natürlich kann man den „theoretischen“ Installationszeitpunkt per GPO einstellen und natürlich kann man auch über WSUS Gruppen dafür sorgen das nicht für alle Gruppen alle Updates genehmigt werden.
In einem interessanten After \\ICE:2011 Gespräch in Lingen mit Andreas S. hat mir dieser von einem selbst erstellten Script erzählt, welches die Windows Update API antriggert und sich somit Updates Script gesteuert herunterladen und installieren lassen.
Nachdem er mir das Script freundlicherweise zur Verfügung gestellt hat, habe ich mir dies zusammen mit unserem Programmierer mal angesehen und sind nach ein wenig „BING it“ auch im Netz beim MSDN fündig geworden.
Dieses Script triggert die WUA API, lädt alle benötigten Updates vom WSUS Server auf den Client und installiert diese. Hierbei werden auch Updates welche zusammen installiert werden sollten oder solche die aufeinander aufbauen in Gruppen zusammen gefasst.
Außerdem erkennt das Script ob ein Reboot benötigt wird und führt diesen auf Nachfrage auch aus.
Wir haben das original Script in soweit verändert, dass es wenn es Updates gefunden hat unsere Antiviren Lösung stoppt (Zeile 22-25) (Das beschleunigt das Update auf unseren Kassensystemen um Faktor 10 *g) und den Reboot automatisch ohne Nachfrage durchführt bzw. das AV Programm wieder startet (Zeile 98-100) sollte kein Reboot benötigt werden.
Das Script wird wie folgend lokal ausgeführt:
cscript WUA_SearchDownloadInstall.vbs
oder Remote per PsExec
"PsExec.exe \\RECHNERNAME -u DOMAIN\USER -p PASSWORD -e cscript \\SERVER\SHARE\WUA_SearchDownloadInstall.vbs"
Um mehrere Rechner von einer Remotemaschine anzutriggern könnte man die @File Option von PsExec nutzen – leider werden diese dann nacheinander ausgeführt was deutlich zu zeitaufwändig ist.
Eine Quick and Dirty Lösung ist es, für eine überschaubare Anzahl an Clients diese in ein Batch einzubauen:
start c:\windows\system32\cmd /c "PsExec.exe \\RECHNERNAME1 -u DOMAIN\USER -p PASSWORD -e cscript \\SERVER\SHARE\WUA_SearchDownloadInstall.vbs"
start c:\windows\system32\cmd /c „PsExec.exe \\RECHNERNAME2 -u DOMAIN\USER -p PASSWORD -e cscript \\SERVER\SHARE\WUA_SearchDownloadInstall.vbs“
Hier wird jetzt für jeden Rechner eine cmd geöffnet.
Wenn man sich das Resultat noch ansehen will kann man den Befehl um ein & pause ergänzen:
start c:\windows\system32\cmd /c "PsExec.exe \\RECHNERNAME2 -u DOMAIN\USER -p PASSWORD -e cscript \\SERVER\SHARE\WUA_SearchDownloadInstall.vbs & pause"
Download modifiziertes Script WUA_SearchDownloadInstall_tap.vbs
Getestet unter Windows XP 32bit SP3, Windows 7 32bit SP1, Windows Server 2008 32/64bit inkl. R2
Happy Patching
Auch veröffentlicht auf FAQ-O-matic.net
<UPDATE>
Also noch zwei Worte zum PsExec.
1. Wenn das Script auf einem Share liegt muss zwingen mit -u ein Benutzer angegeben werden, der auf der Remotemaschine Admin Rechte und auf dem Share lesen Rechte hat.
2. Wenn das Zielsystem Vista oder höher ist und die UAC an ist muss zusätzlich der -h Schalter gesetzt werden.
</UPDATE>
Tags: Server 2003, Server 2008, Vista, Windows, Windows 7, Windows XP, WSUS
31. August 2011 um 10:43
Alternativ geht das auch recht elegant mit dem kostenlosen Specops Gpupdate. Erweitert die ADUC-Oberfläche und bringt PS-Erweiterungen mit denen man die Updates dann triggern kann.
Viele Grüße,
Markus
31. August 2011 um 11:26
Hallo Markus,
besten Dank für den Tipp. Da wir Specops eh installiert haben werd ich das die Tage mal ausprobieren.
Das schöne an dem Script ist für uns, dass wir das zeitgesteuert triggern können.
12. Dezember 2011 um 12:19
Probier mal das gratis command line tool WuInstall (http://www.wuinstall.com), macht in etwa dasselbe wie das Script mit ein paar Zusatzuoptionen. So spart man sich das ausprogrammieren der WUA-API calls. WuInstall kann man auch in ein Batch File einbauen und dann manuell individuellere Dinge wie zB AV Lösung starten / stoppen herumbauen.
12. Dezember 2011 um 12:25
Besten Dank – werd ich mal testen
18. Januar 2012 um 12:22
@Frank: Wenn ich richtig gelesen habe, ist dieses Tool nur für den nicht-kommerziellen Einsatz kostenlos (ja, die Free-Variante).
Somit ist das VB-Script also vorzuziehen 🙂