Zielsucher

Windows Management Instrumentation (WMI) und Windows Script Host automatisieren viele Admin-Aufgaben, auch über das Netzwerk auf entfernten Rechnern. Pfiffige Skripte suchen selbst nach den PCs, statt nur feste Computerlisten abzuarbeitet.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 20 Min.
Von
  • Nils Kaczenski
Inhaltsverzeichnis

WMI basiert auf einem Provider-Modell: Dem Anwender beziehungsweise dem Skriptentwickler präsentiert es eine einförmige, abstrahierte Sicht auf den Computer. Obwohl ein Notebook-Akku ganz etwas anderes ist als ein Anmeldekonto, können für solch unterschiedliche Systembestandteile stets dieselben Methoden verwendet werden, um Informationen auszulesen oder die Konfiguration zu verändern. Dafür sorgen eben die Provider, die technische Details vor dem Anwender verbergen und ihm Daten in einfacher Form zur Verfügung stellen oder Änderungen vornehmen. Solche Provider liefert Windows in großer Zahl mit, und viele Softwarehersteller erweitern diesen Satz um Provider für ihre eigenen Produkte.

Zur leichteren Ansprache sind WMI-Provider in Namensräumen organisiert, die zusammengehörige Objektklassen in einer hierarchischen Baumstruktur anordnen. Dies folgt den Vorgaben des zugrunde liegenden Standards "Web-Based Enterprise Management (WBEM)", der von einer Arbeitsgruppe großer Systemhersteller entworfen wurde. Der am häufigsten genutzte Namensraum heißt "root\CIMv2" und verweist auf das "Common Information Model (CIM)", das Teil des WBEM-Standards ist.

Gemäß den Ideen der Objektorientierung gibt WMI Klassen vor, also Vorlagen für konkrete Objekte, mit denen Programmierer arbeiten können. Von der Klasse "Win32_Processor" lassen sich so ein oder mehrere Objekte für die CPUs eines Computers erzeugen. Die Klasse gibt dabei vor, welche Eigenschaften des Objekts gelesen oder verändert werden können. Ebenso ist über Methoden definiert, welche Aktionen ein Objekt ausführen kann: Die Klasse "Win32_Printer" etwa erlaubt, einen konkreten Drucker mit der Methode "Pause" anzuhalten. Mehr zu diesen Techniken finden Sie in den Artikeln Eins für alles in Heft 15/2006 sowie Perfektes Paar in Heft 24/2006 der Zeitschrift c't.

Der Skriptgenerator Scriptomatic kann mehrere PCs im Netzwerk abfragen, allerdings nur aus einer festen Liste.

Ein hervorragendes Werkzeug, um die Arbeit mit WMI kennen zu lernen und gleichzeitig einen Einblick in die Funktionsvielfalt der WMI-Klassen zu erhalten, ist das kostenlose Tool Scriptomatic 2.0 von den "Scripting Guys", einem skriptbegeisterten Team bei Microsoft. Entstanden ist Scriptomatic aus einem Demonstrationsprogramm für WMI. Mittlerweile handelt es sich um einen pfiffigen Codegenerator, der auf Mausklick WMI-Skripte erzeugt, die direkt ausgeführt oder zur weiteren Bearbeitung gespeichert werden können.

Im Dropdown-Feld oben links bietet das Programm die verschiedenen WMI-Namensräume an, die auf dem jeweiligen System vorhanden sind. Je nach Auswahl stehen dann im zweiten Dropdown-Feld die zugehörigen Klassen zur Verfügung. Klicken Sie auf eine davon, so erzeugt Scriptomatic ein Skript, das die Eigenschaften aller verfügbaren Objekte der Klasse ausgibt. Der Button "Run" über dem Skriptfeld führt das Skript in einem Konsolenfenster aus und dient so als Ad-hoc-Informationstool.

Im unteren Feld in Scriptomatic können Sie eine Liste mit Namen von Computern angeben, auf das Skript abfragen soll. WMI-Abfragen arbeiten auch problemlos über das Netzwerk – vorausgesetzt, Sie verfügen über ausreichende Rechte auf dem Zielsystem und keine Firewall behindert die Kommunikation. Welche Rechte Sie konkret benötigen, hängt von den angefragten Objekten ab – manchmal reichen Benutzerrechte, manchmal müssen Sie Administrator sein. Die nötigen Ausnahmen in der Windows-XP-Firewall erzeugen Sie auf einen Schlag mit dem Kommando netsh firewall set service remoteadmin enable.

Die Computerliste können Sie entweder manuell in das Scriptomatic-Feld eintragen oder aus einer vorbereiteten Textdatei auslesen. In vielen Situationen wäre es aber viel praktischer, wenn die Liste aus dem Netzwerk dynamisch generiert würde, damit sie nicht immer wieder manuell an Veränderungen angepasst werden muss. Kein Problem – eine universelle Funktion kann die gewünschte LAN-Liste erzeugen und sie zum Aufruf beliebiger WMI-Skripts nutzen.

Auf WMI-Anfragen reagieren ohnehin nur Windows-Rechner, sodass es genügt, auf der Ebene des Windows-Netzwerks nach ihnen zu suchen. Allgemeinere Methoden wie ein Ping-Scan würden die Liste nur mit ungeeigneten Stationen ohne Windows aufblähen. Da Windows-Netzwerke allerdings sehr unterschiedlich aufgebaut sein können, stellen wir im Folgenden vier Varianten solcher Funktionen vor. Eine davon eignet sich für alle Windows-Netze, die drei anderen setzen eine Domäne mit Active Directory voraus.