Hallo lenny,
lenny schrieb on 16.06.11 um 16:38:52:
ich versuche gerade ein Script zu basteln, was einmal in der Woche (in unserem Wartungsfenster) alle meine Server neu startet und und per Mail über das Erbegnis informiert.
Da ist schon mal entscheiden, wo das Script läuft,
1) auf einem WSUS-Server remote gegen andere Server,
2) auf einer Wks (mit oder ohne WSUS-Console) remote gegen andere Server
3) auf jedem betroffenen Server (Interaktiv oder Scheduled initiiert)
Da ist entscheidend, welches API vor Ort vorhanden ist.
Es gibt ein API für WSUS-Server (Microsoft.UpdateServices.Administration) und für Clients (Bestandteil jedes WUA).
lenny schrieb on 16.06.11 um 16:38:52:
Aber es soll natürlich nur ein Reboot durchgeführt werden, wenn Windows auch einen Neustart durch Updates wünscht.
Das kann nur Windows bzw der WUA entscheiden. Durchaus können mehrere Updatedurchläufe mit erforderlichem Neustart auftreten. Das liegt an dem Prinzip "Neue Voraussetzung durch neu installierte Updates"!
D.h. nach einem Neustart sollte erneut auf erforderliche Updates geprüft werden.
lenny schrieb on 16.06.11 um 16:38:52:
Natürlich könnte ich mir nun einen abbrechen und versuchen die Windowsupdate.log so zu zerlegen, dass er den eintrag RebootRequired findet, aber ich denke das ist ein wenig mit Kanonen auf Spatzen geschossen.
Richtig. Je nach API kann dieses Erfordernis geprüft werden. Mit dem Client-API vor Ort, z.B. nach dem Installationsdurchlauf. Mit dem WSUS-Server-API, wenn der Client (nach gewisser Zeit!) den Zustand des RebootNeeded dem WSUS-Server gemeldet hat.
lenny schrieb on 16.06.11 um 16:38:52:
Gibt es irgendwo einen RegKey oder eine Datei, an der man(n) festmachen kann, ob Neu gestartet werden soll?
Besser nicht, das API arbeitet immer zuverlässiger, als irgendeine freie Interpretation eine Datei oder der Registry. Die Funktionsaufrufe takten sich in die internen Mechanismen sauber ein, so das eine Situation aktueller ermittelt wird, als irgend eine Stelle im Windows, die eventuell mit tollerierter Zeitverzögerung irgendwo etwas z.B. visualisieren soll. Dafür ist das API ja da.
lenny schrieb on 17.06.11 um 11:00:46:
Powershell ist für mich absolutes Neuland...
Mein Tipp:
Installiert Dir das Visual Studio 2010 Express auf eine Kiste. Das ist kostenlos und bietet Dir die Möglichkeit eines übersichtlichen umfangreichen Studiums beider API-Bestandteile an. Ergänzend wirst Du auch punktuell an die Onlinehilfe im MSDN weitergeleitet. Da klären sich bestehende Verständnisprobleme schnell auf.

Ich denke, da werden Dir die Augen übergehen und neue Ideen kommen. Viel Spaß.

PS: Die Erkenntnisse kannst Du leicht in PowerShell übertragen. Das ist dann nur ein Syntax-Problem.

PS2: Dein Ergebnis wär hier im Forum dankenswert aufgehoben. Wie wärs ...

Gruß Dani