WSUS-Automatisierung mit Powershell-Skripten
Mehrere Punkte in WSUS haben wir für den Betrieb automatisiert:
- automatisches Entfernen von Hosts, die sich länger nicht gemeldet haben, und von Updates, die nicht mehr benötigt werden (z.B. weil neuere Updates von MS zur Verfügung gestellt wurden),
- automatisches Gruppieren von Hosts in Gruppen in Abhängigkeit von der IP-Adresse (Eingabedaten in CSV-Datei mit IP-Bereichen, auch besondere IP-Bereiche ohne Neuzuordnung)
- Erzeugung von Reports in HTML nach Gruppen (Rechnerübersicht, Updatestatus)
- regelmäßige Gesamtzahlen für zeitliche Verläufe (Export in CSV-Datei)
Realisiert wurden diese Dinge von Herrn M. Kötter als Powershell-Skripte.
Details
Der Ablauf der Skripte wird über den Taskplaner täglich angestoßen. Da mehrere Skripte nacheinander ablaufen sollen, gibt es eine Art Master-Skript, das als Task eingeplant wird und die anderen Skripte, die die eigentlichen Arbeiten verrichten, aufruft. Dieses ist das einfachste Skript: wsus_taskplan.ps1.
Eingeplant wird das Skript mit Aufruf von Powershell, d.h. im Eingabefeld "Ausführen" des Taskplaners steht bei uns C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe -Command ./wsus_taskplan.ps1, bei "Ausführen in" steht Einstellungen\Administrator.WSUS1.001\Desktop\wsus_management".
Aufräumen
Es gibt ein paar Dinge im WSUS-Server, die man als Routine-Wartungen bezeichnen und automatisieren kann. Dazu gehört klar das Entfernen der nicht mehr benötigten, inzwischen veralteten und ersetzten Updates. Für uns gehört auch das Entfernen von Hosts, die sich länger nicht mehr gemeldet haben, dazu - das liegt natürlich an der heterogenen Struktur einer Hochschule mit dezentralen Zuständigkeiten und ist sicherlich nicht für jeden Einsatzzweck ratsam. Dieses realisiert das Skript wsus_cleanup.ps1, in dem man ab ca. der Hälfte durch Setzen von booleschen Werten die genau vorzunehmenden Aufräumarbeiten den eigenen Bedürfnissen anpassen kann.
Das Aufäumen der veralteten Hosts funktioniert teilweise nicht. Das scheint ein Problem der WSUS-API zu sein, es gibt ein paar Rechner, die nicht gelöscht werden. Wenn man das Aufräumskript an einer Eingabeaufforderung aufruft, gibt es daher am Schluss eine Liste von Hosts aus, die wohl veraltet sind aber nicht gelöscht wurden. Dieses sind nach unserer Erfahrung aber wenige Einzelfälle.
CSV-Export für Statistiken
Neben den Kurven, die wir über SNMP mit Cacti malen (s.u.), wollen wir auch Tageszahlen für Statistiken verwenden. Dieses macht das Skript wsus_stats.ps1, das je Aufruf (also bei uns einmal täglich) eine Zeile mit Summenwerten einer CSV-Datei zufügt. Der Pfad zu dieser Datei ist als Parameter am Anfang des Skriptes definiert und ggf. anzupassen.
Ab und zu zeichnen wir aus der erhaltenen CSV-Datei mit Gnuplot o.Ä. Kurvenverläufe, die die Einspielzeiten von Patches nach Patch-Days gut darstellen und leider manchmal eher ernüchtern ...
Neben dieser Summenstatistik erzeugen wir noch eine CSV-Datei mit allen Hosts und ihrem jeweiligen Status, die wir per ssh (Putty mit Key) automatisch auf einen Linux-Server übertragen. Dort fließen die Daten in eine Datenbank ein, die (mit anderen Informationen zusammen) einen Statusüberblick für einzelne Rechner bieten soll. Dieses Skript wsus_csv_export_nach_adminfo.ps1 ist nicht im wsus_taskplan.ps1 mit eingeplant, sondern von uns separat via Taskplaner automatisiert.
Gruppierung von Hosts
Da die meisten WSUS-Clients in der Hochschule nicht einer zentralen Administration unterliegen, ist es für uns das sinnvollste, Rechner anhand Ihrer IP-Adresse einem Institut o.Ä. zuzuordnen. Die Information, welche IP zu welcher Einrichtung gehört, liegt bei uns im Rahmen der IP-Adressvergabe bzw. DNS-Verwaltung vor. Die Daten werden dort in eine CSV-Datei exportiert und dann auf den WSUS-Server transferiert.
Die CSV-Datei (vgl. Beispieldatei IPBereiche.csv) hat je Zeile die Einträge Start-IP-Adresse, End-IP-Adresse, Einrichtungskürzel (und damit Gruppenname in WSUS). Je Einrichtungskürzel können mehrere Zeilen in der CSV-Datei sein, falls eine Einrichtung mehrere Netzbereiche verwendet. Eine Besonderheit stellen das WLAN und das VPN dar: wenn Rechner von dort den WSUS-Server kontaktieren, soll die bisherige Einrichtungs- bzw. Gruppenzuordnung nicht geändert werden. Dafür gibt es das spezielle Einrichtungskürzel no_reassign in der CSV-Datei. Ob die in der Datei angegebenen IP-Bereiche disjunkt sind, prüft das Skript nicht (??). Nicht in der CSV-Datei abgedeckte IP-Adressen werden der Standard-WSUS-Gruppe "UnassignedComputers" zugeordnet.
Der Ablauf des Skriptes wsus_rechner_nach_range_gruppieren.ps1 ist grob wie folgt:
- Zunächst wird die CSV-Datei eingelesen und danach werden die Informationen passend in Hash-Maps aufbereitet.
- Danach werden im WSUS definierte Gruppen, die es in der CSV-Datei nicht gibt, entfernt (und enthaltene Rechner als unzugewiesen markiert). Rechner, die bereits einer in WSUS und der CSV-Datei enthaltenen Gruppe angehören, werden bzgl. der Zugehörigkeit ihrer IP zu der bisherigen Gruppe überprüft und ggf. aus der Gruppe entfernt (als unzugewiesen markiert).
- Noch nicht in WSUS aber in der CSV-Datei definierte Gruppen werden neu angelegt.
- Alle zu diesem Zeitpunkt in WSUS als unzugewiesen ("UnassignedComputers") markierten Rechner werden durchgegangen. Gehört die IP gemäß CSV-Datei zu einer Einrichtung, wird der Rechner der entsprechenden WSUS-Gruppe zugeordnet.
HTML-Ausgaben je Gruppe
Je Gruppe (d.h. je Einrichtung unter Verwendung des zuvor beschriebenen Skriptes) soll ein Report über die Computer der Gruppe erstellt werden, der den jeweiligen Einrichtungen zur Verfügung gestellt werden kann. Der Report besteht aus zwei HTML-Dateien:
- Übersicht über den Update-Status: wsus_bericht_*.html
- Computer-Grundinformationen, die in WSUS vorliegen: wsus_inventur_*.html
Der Update-Status versucht, die Zustand der Clients auch grob mit einem Ampelstatus zu versehen. Die Festlegung, wann gelb und wann darüber hinausgehend rot vergeben wird, wurde von uns getroffen. Hier ist evt. eine Anpassung anhand von Erfahrungswerten notwendig. Für die Erstellung der Update-Status-Berichte ist das Skript wsus_html_ausgabe_der_gruppen.ps1 zuständig.
Die Inventar-Berichte enthalten neben der IP-Adresse und dem letzten Kontaktdatum Informationen über das Betriebssystem und den (Motherboard-) Hersteller. Erstellt werden die Berichte mit dem Skript wsus_html_ausgabe_inventur.ps1.
Beide Skripte laufen in einer Schleife durch die WSUS-Gruppen. In dieser Schleife wiederum ist eine Schleife über alle Rechner der jeweiligen Gruppe sortiert nach der IP-Adresse. Die Skripte nehmen das Zielverzeichnis für die Reports als Parameter, die HTML-Tags sind bzw. das Design ist in den Ausgabe-Befehlen als Strings hart kodiert.
Skripte
Die o.g. Skripte (Stand 4/2010) finden Sie alle im Zip-Archiv wsus_ps1-skripte.zip.
WSUS-Überwachung mit SNMP & Cacti
Gewisse Zahlen am WSUS-Server wollen wir, möglichst im zeitlichen Verlauf, überwachen. Cacti-Grafen (und evt. später eine Signalisierung über Nagios bei der Überschreitung von Schwellwerten) sind bei uns im Einsatz, damit nicht ein täglicher Login auf dem WSUS-Server nötig ist. Die Abfrage des WSUS-Servers geschieht mittels SNMP, diese Abfrage kann natürlich auch von anderen Programmen als Cacti erfolgen. Das Setup läuft seit 2007 bei uns mit einem x64 Windows 2003 als WSUS-Server ohne Probleme.
SNMP-Erweiterung
Die snmp-Erweiterung von M. Kötter ermöglicht das Abfragen der WSUS Statistiken über den snmp-Dienst von Windows. Das Packet enthält den Quellcode, Debug und Release Builds für x32 und x64 sowie eine ReadMe.txt, welche die notwendigen Hinweise zur Installation liefert: Windows-SNMP-Plugin.
Wir haben noch keine eigenen MIB-Baum angelegt, wobei wir aber OIDs aus einem für das RRZN reservierten Bereich genommen und bei uns auch zu diesem Zwecke reserviert haben. Die OIDs sind derzeit leider nur im Quelltext des Windows-SNMP-Plugins kommentiert.
(MiB-Baum später)
Im Zusammenspiel mit dem Cacti Template ermöglicht das snmp Plugin eine komfortable Überwachung von WSUS Diensten.
Cacti
Herr H. Kessener hat über die GUI den WSUS-Server eingepflegt und das Template später exportiert. Sie können das XML-Template herunterladen und in Ihrer Cacti-Installation importieren.
WSUS-Client-Installer
Neben der Einstellung der Clients über Gruppenrichtlinien oder per Registry-Patch bieten wir auch eine automatische Umkonfiguration per Installer (MSI-Paket) an. Dieses ist für Stand-Alone-Clients besonders einfach für den Anwender. Gebaut haben wir den Installer mit WiX, die XML-Definition mit Zusatzdateien und eine Batch-Datei zum Bauen als Wsus-Installer-Quelle.
Kein Support
Für diesen Tipp / die Software bzw. Skripte leistet das RRZN keinen Support. Beachten Sie bitte die Hinweise auf der Anleitungen-Seite.

