
areiland
Threadstarter
- Dabei seit
- 05.07.2012
- Beiträge
- 8.703
Was kaum einer kennt:
Windows hat umfassende Informationen über den Rechner und die verbaute Hardware parat. Zu diesem Zweck besitzt Windows die WMI (Windows Mangement Instrumentation) die den Rechner einer umfassenden Inventur unterzieht. Diese Informationen kann man auch relativ leicht gewinnen um einen Überblick über das System zu bekommen. Zusammen mit der Powershell ein fast unschlagbares Team in Sachen Hardwareinformation.
Das Auslesen, der von Windows gespeicherten Informationen, geht sowohl per Cmd mit dem Tool "Wmic >Alias<" (Die Liste der Aliase wird mit dem Befehl: "Wmic /?" ermittelt), als auch wesentlich komfortabler per Powershell mit dem Cmdlet "Get-Wmiobject". "Wmic" und "Get-WmiObject" kennen hunderte von Klassen, denen Windows Geräte- oder Einstellungsparameter zuordnen kann. So kann man z.B. mit der Befehlszeile: "Get-wmiobject win32_baseboard" ganz einfach die Eigenschaften des Mainboards auslesen. Erweitert man diese Befehlszeile um die Parameter "| select *" dann zeigt Wmi alle bekannten Eigenschaften des Mainboards an. Die Eigenschaften eines Objektes werden gleich formatiert in einer Liste angezeigt. Statt mit "Select *" alles abzurufen, kann man auch die einzelnen Eigenschaften eines Gerätes abrufen, indem man die von select * ausgegebene Liste filtert und den Stern durch die (von Kommas getrennten) Eigenschaftsnamen ersetzt. Aber Achtung: Nach dem letzten Eigenschaftsnamen darf kein Komma mehr stehen - sonst kommt eine Fehlermeldung.
Die Ausgaben von "Get-Wmiobject" kann man selbstverständlich umleiten und in eine Datei schreiben lassen - indem man die Befehlszeile um die Sequenz ">LW:\Pfad\Dateiname" erweitert. Um die Ausgaben von mehreren Abfragen in die gleiche Datei schreiben zu lassen, ist es erforderlich dass man in jeder nachfolgenden Befehlszeile das ">" doppelt (">>"). Die Nutzung der bekannten Umgebungsvariablen ist ebenfalls möglich, nur muss man sie in der Powershell anders umschreiben. Hier wird aus der Variable "%temp%" die Variable "$env:temp". Die Systemvariablen werden also mit einem "$env:" eingeleitet, das um den Variablennamen ergänzt wird. Die gültigen Variablen werden mit "Get-ChildItem env:" ermittelt, das Cmdlet gibt die im System vorhandenen Umgebungsvariablen aus.
Die Klassen von "Get-Wmiobject" lassen sich mit dem Befehl: "Get-Wmiobject -list" ermitteln. Da diese Liste wirklich hunderte von Klassen umfassen kann, ist es vielleicht nötig sie zu filtern um nur die Klassen zu erhalten, die relevant sind. Dies kann man mit der Befehlszeile: "get-wmiobject -list|where {$_.name -like "win32_*"}" erreichen. In meinem Beispiel lasse ich nur die Klassen auflisten, die mit "Win32" beginnen. Win32 kann man auch durch "Cim" oder "Msft" ersetzen, die ebenfalls eigene Klassen darstellen.
"Get-Wmiobject" kann auch durch "gwmi" abgekürzt werden - man kann mit dem Parameter "-computername" (Kurzform: "-computer") Rechnername auch Computer im Netzwerk abfragen und ihre Konfiguration zentral speichern.
Im Anhang findet ihr als Beispiel ein Powershellscript, das die wichtigsten Hardwaredaten des lokalen Rechners ausliest und in der Datei "Syteminformationen.txt" auf dem Desktop ablegt. Das gepackte Script herunterladen und entpacken - dann über einen Rechtsklick und der Auswahl "Mit Powershell ausführen" die Informationen sammeln lassen.
Anhang anzeigen PS Sysinfo Text.zip
Als Neuerung hier als Anhang nochmal das gleiche Script, allerdings gibt es die ermittelten Informationen jetzt in eine Html Datei aus, die bequem im Browser geöffnet werden kann:
Anhang anzeigen PS Sysinfo Html.zip
Dieser Thread ist allein zum Nachschlagen gedacht - deshalb ist er geschlossen. Für Fragen, Diskussionen und Anregungen dazu - bitte einen Thread in den Diskussionsforen erstellen. Erweitert wird dieser Thread nur, wenn sich Änderungen an der Vorgehensweise ergeben und deshalb neue Informationen erforderlich werden.
Windows hat umfassende Informationen über den Rechner und die verbaute Hardware parat. Zu diesem Zweck besitzt Windows die WMI (Windows Mangement Instrumentation) die den Rechner einer umfassenden Inventur unterzieht. Diese Informationen kann man auch relativ leicht gewinnen um einen Überblick über das System zu bekommen. Zusammen mit der Powershell ein fast unschlagbares Team in Sachen Hardwareinformation.
Das Auslesen, der von Windows gespeicherten Informationen, geht sowohl per Cmd mit dem Tool "Wmic >Alias<" (Die Liste der Aliase wird mit dem Befehl: "Wmic /?" ermittelt), als auch wesentlich komfortabler per Powershell mit dem Cmdlet "Get-Wmiobject". "Wmic" und "Get-WmiObject" kennen hunderte von Klassen, denen Windows Geräte- oder Einstellungsparameter zuordnen kann. So kann man z.B. mit der Befehlszeile: "Get-wmiobject win32_baseboard" ganz einfach die Eigenschaften des Mainboards auslesen. Erweitert man diese Befehlszeile um die Parameter "| select *" dann zeigt Wmi alle bekannten Eigenschaften des Mainboards an. Die Eigenschaften eines Objektes werden gleich formatiert in einer Liste angezeigt. Statt mit "Select *" alles abzurufen, kann man auch die einzelnen Eigenschaften eines Gerätes abrufen, indem man die von select * ausgegebene Liste filtert und den Stern durch die (von Kommas getrennten) Eigenschaftsnamen ersetzt. Aber Achtung: Nach dem letzten Eigenschaftsnamen darf kein Komma mehr stehen - sonst kommt eine Fehlermeldung.
Die Ausgaben von "Get-Wmiobject" kann man selbstverständlich umleiten und in eine Datei schreiben lassen - indem man die Befehlszeile um die Sequenz ">LW:\Pfad\Dateiname" erweitert. Um die Ausgaben von mehreren Abfragen in die gleiche Datei schreiben zu lassen, ist es erforderlich dass man in jeder nachfolgenden Befehlszeile das ">" doppelt (">>"). Die Nutzung der bekannten Umgebungsvariablen ist ebenfalls möglich, nur muss man sie in der Powershell anders umschreiben. Hier wird aus der Variable "%temp%" die Variable "$env:temp". Die Systemvariablen werden also mit einem "$env:" eingeleitet, das um den Variablennamen ergänzt wird. Die gültigen Variablen werden mit "Get-ChildItem env:" ermittelt, das Cmdlet gibt die im System vorhandenen Umgebungsvariablen aus.
Die Klassen von "Get-Wmiobject" lassen sich mit dem Befehl: "Get-Wmiobject -list" ermitteln. Da diese Liste wirklich hunderte von Klassen umfassen kann, ist es vielleicht nötig sie zu filtern um nur die Klassen zu erhalten, die relevant sind. Dies kann man mit der Befehlszeile: "get-wmiobject -list|where {$_.name -like "win32_*"}" erreichen. In meinem Beispiel lasse ich nur die Klassen auflisten, die mit "Win32" beginnen. Win32 kann man auch durch "Cim" oder "Msft" ersetzen, die ebenfalls eigene Klassen darstellen.
"Get-Wmiobject" kann auch durch "gwmi" abgekürzt werden - man kann mit dem Parameter "-computername" (Kurzform: "-computer") Rechnername auch Computer im Netzwerk abfragen und ihre Konfiguration zentral speichern.
Im Anhang findet ihr als Beispiel ein Powershellscript, das die wichtigsten Hardwaredaten des lokalen Rechners ausliest und in der Datei "Syteminformationen.txt" auf dem Desktop ablegt. Das gepackte Script herunterladen und entpacken - dann über einen Rechtsklick und der Auswahl "Mit Powershell ausführen" die Informationen sammeln lassen.
Anhang anzeigen PS Sysinfo Text.zip
Als Neuerung hier als Anhang nochmal das gleiche Script, allerdings gibt es die ermittelten Informationen jetzt in eine Html Datei aus, die bequem im Browser geöffnet werden kann:
Anhang anzeigen PS Sysinfo Html.zip
Dieser Thread ist allein zum Nachschlagen gedacht - deshalb ist er geschlossen. Für Fragen, Diskussionen und Anregungen dazu - bitte einen Thread in den Diskussionsforen erstellen. Erweitert wird dieser Thread nur, wenn sich Änderungen an der Vorgehensweise ergeben und deshalb neue Informationen erforderlich werden.