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?
Patches 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, dass nicht für alle Gruppen alle Updates genehmigt werden.
In einem interessanten Gespräch bei der ice:2011 in Lingen mit Andreas S. hat mir dieser von einem selbst erstellten Script erzählt, welches die Windows-Update-API antriggert, wodurch sich Updates scriptgesteuert 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 zusammengefasst. Außerdem erkennt das Script ob ein Reboot benötigt wird und führt diesen auf Nachfrage auch aus.
Wir haben das Originalskript so 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) 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 ein CMD-Fenster 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
www.ewig-drohendes-versagen.de
http://faq-o-matic.net/?p=3352