Zum Inhalt springen
Der Guide für ein smartes Leben.
VG Wort Pixel
Ratgeber: Admin-Skripts

Skripte und Befehle für den Admin, Teil 2

Autoren: Thomas Bär und Frank-Michael Schlede • 2.5.2012 • ca. 4:00 Min

Inhalt
  1. Skripte, Befehle und Erweiterungen für Administratoren
  2. Skripte und Befehle für den Admin, Teil 2

Tipp 5: SNMP im Skript Während sich Windows-Systeme am besten über WMI abfragen lassen, so ist für Infrastruktur-Geräte wie Router oder Switches, aber auch für Unix/Linux/OS X-Computer SNMP das Mittel der Wahl, um an Inventar- und Statusdaten zu gelangen. Um mit VB-Script auf SNMP zugreifen ...

Tipp 5: SNMP im Skript

Während sich Windows-Systeme am besten über WMI abfragen lassen, so ist für Infrastruktur-Geräte wie Router oder Switches, aber auch für Unix/Linux/OS X-Computer SNMP das Mittel der Wahl, um an Inventar- und Statusdaten zu gelangen. Um mit VB-Script auf SNMP zugreifen zu können, sind keinerlei Hilfsmittel notwendig. In erster Linie wird dieser SNMP-Zugriff für Drucker genutzt, erlaubt aber auch die Abfrage von anderen Geräten.

image.jpg
Eine einfache Zeile PowerShell-Code bringt die BIOS-Informationen auf den Schirm: Hier zeigt sich, wie schnell und einfach WMI-Zugriffe mit der PowerShell realisiert werden können.
© Hersteller/Archiv

In großen Umgebungen ist auf Dauer der Einsatz von Spezialisten wie WhatsUp Gold von Ipswitch oder Nagios die galantere Lösung.

Tipp 6: Verwaltung des PCs mit WMI und PowerShell

Wenn es um Administrationsaufgaben und Scripting geht, dann darf die PowerShell nicht fehlen. Zumal Microsoft den Einsatz dieser Sprache im Administrationsumfeld weiter forciert. Der kommende Windows Server 8 ist ebenso wie der aktuelle Exchange Server 2010 ohne das PowerShell-Scripting nicht denkbar. Aber schon in früheren Windows-Versionen stand den Systemprofis eine Technik zur Verwaltung der PCs zur Verfügung: WMI.

Die Windows Management Instrumentation (WMI) ist eine Implementierung und auch Erweiterung des Common Information Models (CIM) durch Microsoft. Dabei handelt es sich um eine Kernfunktionalität des standardisierten Web Based Enterprise Managements (WBEM) für Windows. WMI ermöglicht den schreibenden und lesenden Zugriff auf beinahe alle Einstellungen von Windows-Systemen.

So wurde es im Windows-Umfeld zu einer der wichtigsten Schnittstellen zur Administration und Fernwartung von Windows-Computern, ganz gleich ob es sich dabei um PCs oder Server-Systeme handelt. Die Technik basiert auf COM und DCOM und wurde zum integralen Bestandteil der Windows-Systeme ab Windows 2000 und höher.

image.jpg
Welche Klasse ermöglicht mir den Zugriff auf die BIOS-Informationen? Mit Hilfe des List-Parameters kann ein Anwender schnell feststellen, welche möglichen Klassen ihm zur Verfügung stehen.
© Hersteller/Archiv

Typische Einsatzgebiete sind dabei das Auslesen des WMI-Repository (Inventardaten von Hardware und Software), die Fernsteuerung von Diensten, das Auslesen und Einstellen von Ereignisprotokollen und Performance-Logs und die Bearbeitung der Windows-Registrierungsdatenbank (Registry). WMI wird typischerweise per PowerShell, VB-Script oder über das Kommandozeilenprogramm Windows Management Instrumentation Command-line (WMIC) angesprochen.

Gerade mit VB-Script konnte sich der Einsatz von WMI aber schnell zum Albtraum entwickeln, da sich der Zugriff auf WMI kompliziert und aufwändig gestaltete. Unter Einsatz der PowerShell ist das viel einfacher geworden und so können Power-User und Administratoren sehr viel schneller und leichter auf die Hard- und Software-Daten eines Windows-Systems zugreifen. Ein sehr schönes Beispiel dafür ist der folgende Aufruf, der die Daten aus dem BIOS eines Systems ausliest:

Get-WmiObject win32_bios | format-list *

Das Bild ganz oben zeigt, wie umfassend die Informationen sind. Um die gleiche Menge an Informationen mit Hilfe von VB-Script zu bekommen, sind 20 Zeilen Code notwendig! Wer es besonders kurz liebt, kann unter der PowerShell natürlich auch noch die Abkürzungen für die Cmdlets verwenden und bekommt dann eine noch kürzere Befehlszeile:

gwmi win32_bios | fl *

Das Cmdlet GetWmiObject ist also extrem nützlich, wenn es darum geht, Informationen über das Windows-System zu bekommen. Doch wie bekommt der Benutzer ohne umfangreiche Suche in Online-Dokumentationen und Bücher heraus, auf welche Klasse er beispielsweise mit GetWmiObject zugreifen muss, wenn er Information über das BIOS seines Systems benötigt? Hier können die PowerShell-Kommandos direkt helfen. Der folgende Aufruf verwendet den Parameter -List und weist ihn mittels der Wildcards rund um den Begriff BIOS an, alle Klassen anzuzeigen, in deren Bezeichnung das Wort BIOS auftaucht:

Get-WmiObject -List *bios*

Das mittlere Bild zeigt die Ausgabe dieses Aufrufs. Bleibt also nur noch die Frage, welche dieser dort angezeigten Klassen die richtige für unsere Zwecke ist. Das kann nur WIN32_BIOS sein, denn hier tauchen Werte wie BIOSversion und Buildnumber auf. Das funktioniert auf die gleiche Art und Weise für die Prozessordaten:

Get-WmiObject -List *processor*

Auch bei diesem Aufruf zeigt sich eine ganze Reihe von unterschiedlichen Klassen und die von uns gesuchte trägt den Namen Win32_Processor:

Get-WmiObject win32_processor | format-
list *

bringt die gewünschten Angaben auf dem Bildschirm. Wer noch komplexere Suchen und Abfragen auf die WMI-Daten durchführen möchte, kann auch unter der PowerShell die Abfragesprache WQL (SQL for WMI) nutzen. So wird der folgende Aufruf nur die Prozessoren auflisten, bei denen die Powermanagement-Funktion aktiv ist:

Get-WmiObject -Query 'Select
* from win32_processor where PowerManagementSupported=True'

Wie im Bild unten zu sehen ist, wird der dortige Prozessor nicht angezeigt, weil diese Funktion beim ihm nicht aktiv ist.

Tipp 7: Alternative Skript-Sprachen

Eines haben Bordmittel von Betriebssystemen stets gemein: Sie decken den Basisbedarf ab und sind daher für Spezialfälle eher weniger geeignet. Soll die eigentliche Logik im Skript-Job für den Benutzer eigentlich nicht ersichtlich sein, oder sollen Bildschirmdialoge gezielt ferngesteuert werden, so sind die hier vorgestellten Techniken überfordert. AutoIt ist eine Makro-Programmiersprache, um Abläufe unter Windows NT und höher zu automatisieren.

image.jpg
Auch komplexere Aufrufe sind möglich: Hier kommt die Sprache WQL zum Einsatz, die eine Abfrage der WMI-Daten mit Hilfe einer SQL-ähnlichen Sprache ermöglicht.
© Hersteller/Archiv

Der Dialekt ist an Basic angelehnt und sehr schnell zu erlernen. Die Besonderheit der Software liegt darin, dass der Compiler ausführbare EXE-Dateien erzeugt, die auch auf Windows-PCs laufen, auf denen AutoIt nicht installiert ist. Eine weitere, sehr interessante Skriptsprache für Windows ist das von Ruud van Velsen entwickelte KiXtart. KiX eignet sich für das Zusammenspiel mit dem Component Object Model (COM), Active Directory Service Interfaces (ADSI), ActiveX Data Objects (ADO) und WMI und bietet grafische Benutzeroberflächen.

Wem die Erstellung von Skripts für Anmelde-Situationen zu beschwerlich oder zu umständlich ist, der sollte einen Blick auf Desktop Authority von SkriptLogic, einem Tochterunternehmen von Quest Software, werfen. Diese kostenpflichtige Software erlaubt eine äußerst flexible Zuweisung von Laufwerken, Druckern oder die Verteilung von Software aus einer grafischen Oberfläche heraus - ohne selbst coden zu müssen.

Tipp 8: Nützliche WMI-Klassen für den Administrator