Das VBS-Skript Cindy liest per WMI zahlreiche Konfigurationsinformationen von einem Windows-System und gibt sie als übersichtlichen Report aus. Das ist nützlich, um die Rahmendaten eines Servers oder Clients schnell zu Dokumentationszwecken zu erfassen.
Cindy läuft auf allen aktuellen Windows-Plattformen. Getestet wurde es u.a. mit Windows 7 (32 Bit), Windows Server 2008 R2, Windows Server 2008 (64 Bit), Windows Server 2003 (32 Bit) und Windows XP (32 Bit). Es sollte aber auch auf älteren Windows-Versionen laufen, wenn dort WMI nachinstalliert wurde.
In der vorliegenden Fassung erfasst Cindy die wichtigsten Daten zu:
- Betriebssystem
- CPU und Arbeitsspeicher
- Festplatten, Partitionen und logischen Laufwerken
- Netzwerkkarten und IP-Konfiguration
- Lokalen Benutzern und Gruppen
- Freigaben
- Diensten, installierter Software und Hotfixes
Dabei beschränkt das Skript sich bewusst auf die relevanten Rahmendaten, um den Bericht nicht zu überfrachten. Es ist allerdings leicht, zusätzliche Informationen abzufragen; dazu weiter unten mehr.
Achtung: Wie ich just in einem Artikel von Torsten Meringer las, hat die von Cindy verwendete WMI-Klasse „Win32_Product“ einen unschönen Nebeneffekt (um nicht zu sagen: einen ärgerlichen Fehler). Fragt man über sie die installierte Software ab, so führt sie für jedes einzelne Produkt eine MSI-Repatarur aus. Das sorgt nicht nur für eine unnötig lange Ausführungszeit des Skripts, sondern belastet auch das Zielsystem. Im Application-Eventlog des ausgewerteten Systems findet man dann pro Produkt ein Ereignis mit der ID 1035, das auf diesen Vorgang hinweist.
Für eine einmalige Ausführung von Cindy ist das sicher tolerabel. Wer das Skript auf einer größeren Zahl von Rechnern einsetzen oder automatisiert ausführen will, sollte aber prüfen, ob er auf die Produktinformation verzichten kann. In diesem Fall sollte man folgende Zeile löschen oder durch Voranstellen eines Apostroph auskommentieren:
dctWMI.Add „Win32_Product“, „InstallDate,InstallLocation,Vendor,Version“
Der folgende KB-Artikel benennt das Problem und schlägt eine Abhilfe vor: http://support.microsoft.com/kb/974524
Leider aber ist die dort empfohlene WMI-Klasse standardmäßig nicht vorhanden, sondern setzt voraus, dass ein SCCM- oder SMS-Client auf dem System installiert ist!
Download
Cindy findet sich hier zum Download. Man entpacke es an geeigneter Stelle.
Cindy.vbs (v 1.5) (8,6 KiB, 6.474-mal heruntergeladen, letzte Änderung am 11. Mai 2015)
Anwendung
Cindy ist ein Kommandozeilen-Skript und gibt seinen Bericht auch auf der Konsole aus. Daher sollte man seine Ausgabe in eine Datei umleiten. Es ist notwendig, das Skript mit “cscript.exe” zu starten. Ein typischer Aufruf sieht so aus:
C:\Pfad>cscript //nologo cindy.vbs > report.txt
Der Schalter //nologo sorgt dafür, dass das Start-Banner des Script Host unterdrückt wird. So landet nur der Report selbst in der Ausgabedatei.
Das Skript benötigt zwischen 30 Sekunden und mehreren Minuten für seine Arbeit. Der obige Aufruf liest die Daten des lokalen Rechners aus. Um einen anderen Computer zu dokumentieren, übergibt man dem Skript einfach dessen Namen:
C:\Pfad>cscript //nologo cindy.vbs DC01 > DC01.txt
Zur lokalen Ausführung reichen Benutzerrechte aus. Für die Remote-Dokumentation können administrative Rechte auf dem Zielsystem erforderlich sein, außerdem darf WMI nicht per Berechtigung oder Firewall eingeschränkt sein.
Erweiterung
Um den Report zu erweitern, kann man sehr einfach zusätzliche WMI-Klassen oder -Eigenschaften hinzufügen. Dazu bearbeitet man im Skriptcode die folgenden Zeilen (hier nur ein Auszug):
dctWMI.Add "Win32_PhysicalMemory", "BankLabel,Capacity" dctWMI.Add "Win32_DiskDrive", "InterfaceType,Index,Size" dctWMI.Add "Win32_DiskPartition", "Size" dctWMI.Add "Win32_LogicalDisk", "Size,FreeSpace"
Um etwa die “Maximum Block Size” für Platten mit aufzunehmen, ergänzt man die Eigenschaft “MaxBlockSize” in der Zeile mit “Win32_DiskDrive”:
dctWMI.Add "Win32_DiskDrive", "InterfaceType,Index,Size,MaxBlockSize"
Will man z.B. Informationen zu den Lüftern mit aufnehmen, fügt man eine komplette Zeile nach diesem Muster in den Block ein:
dctWMI.Add "Win32_Fan", "DesiredSpeed"
Umgekehrt lassen sich Informationen aus dem Bericht entfernen, indem man die zuständige Zeile löscht oder auskommentiert.
Die Eigenschaft “Caption”, die den Namen des jeweiligen Elements enthält, berücksichtigt Cindy immer von selbst. Welche WMI-Objekte und -Eigenschaften zur Verfügung stehen, erfährt man z.B. auf den MSDN-Seiten bei Microsoft oder in vielen anderen Quellen.
Hier eine Code-Erweiterung von Robert Riebisch. Sie verändert zwei vorhandene Zeilen und fügt eine neue hinzu, um ergänzende Daten auszugeben (Laufzeit, Systemtyp, Uptime).
dctWMI.Add "Win32_ComputerSystem", "AutomaticManagedPagefile,AutomaticResetBootOption,Domain,DomainRole,Manufacturer,Model,NumberOfProcessors,NumberOfLogicalProcessors,PrimaryOwnerName,SystemType,TotalPhysicalMemory" dctWMI.Add "Win32_OperatingSystem", "BootDevice,CodeSet,CountryCode,CurrentTimeZone,InstallDate,LastBootUpTime,OSArchitecture,OSLanguage,ServicePackMajorVersion,ServicePackMinorVersion,SystemDevice,WindowsDirectory" dctWMI.Add "Win32_BaseBoard", "Manufacturer,Model,Name,Product,SerialNumber,Version"
Code
Wer mag, kann Cindy gern an seinen Bedarf anpassen. Es wäre dann nett, wenn ein Hinweis auf das Originalskript und auf faq-o-matic.net im Code verbleibt.
http://faq-o-matic.net/?p=2919