Tags: PowerShell, WMI, Windows 10
PowerShell 5.1 brachte in Windows 10 und Server 2016 ein neues Cmdlet, mit dem sich eine Vielzahl von Systemeigenschaften auslesen lässt. Es heißt Get-ComputerInfo und liefert sowohl Daten zur Hardware-Ausstattung als auch zum Betriebssystem.
Bis dato führte der Königsweg zu den Systeminformationen in PowerShell über WMI und die entsprechenden Cmdlets. Das war in der Vergangenheit das DCOM-basierte Get-WMIObject und neuerdings Get-CimInstance, das über WinRM kommuniziert.
Commodity-Cmdlet
Der wesentliche Vorteil von Get-ComputerInfo besteht darin, dass es deutlich einfacher zu verwenden ist. Es erfordert keine Angaben zu WMI-Klassen, Filter oder Abfragen. Es spuckt ohne Parameter einfach eine lange Liste mit den meisten relevanten Systemeigenschaften aus.
Nachdem dieses Cmdlet keine Informationen liefert, die man nicht auch über WMI bekommen könnte, ist es in erster Linie eine Bequemlichkeitsfunktion. Ein gewisser Aufwand entsteht aber dann bei der Auswertung des Outputs, der ohne Filter zu unübersichtlich ist.
Eigenschaften des Betriebssystems
Diesem Zweck dient der Parameter Property, der auch Wildcards akzeptiert:
Get-ComputerInfo -Property OS*
Dieser Aufruf liefert nur Angaben zum Betriebssystem, die aber immer noch mehr als ein Konsolenfenster füllen und dennoch nicht vollständig sind. Zusätzlich gibt es nämlich noch Eigenschaften, deren Name mit Windows beginnt.
Entsprechend müsste man hier
Get-ComputerInfo -Property OS*,Windows*
eingeben.
Infos zu Hyper-V und AD-Domäne
Übersichtlicher ist der Output für Hyper-V, wobei die Eigenschaft HyperVisorPresent auch bei einer Abfrage in einer VM erscheint und somit nicht bedeutet, dass dieses Feature in der jeweiligen OS-Instanz aktiviert sein muss.
Das Cmdlet kennt auch Daten zur Domäne, die man erwartungsgemäß mit
Get-ComputerInfo -Property *Domain*
abrufen kann.
Einschränkungen bei Remote-Abfrage
Einschränkungen im Vergleich zu den WMI-Cmdlets muss man auch beim Auslesen von Remote-Rechnern in Kauf nehmen. Get-ComputerInfo akzeptiert nämlich nicht den Parameter ComputerName, so dass man explizit eine Remote-Session aufbauen muss:
Invoke-Command -ComputerName win10pro-vm1 -ScriptBlock {Get-ComputerInfo}
Während Get-ComputerInfo an und für sich keine erhöhten Privilegien erfordert, muss man den Remote-Aufruf mit administrativen Rechten starten, es sei denn, man hat WinRM für Standardbenutzer zugelassen.
Verfügbarkeit
Das Cmdlet ist Teil von PowerShell 5.1, die zum Lieferumfang von Windows 10 ab 1607 gehört. Wer Get-ComputerInfo unter älteren Versionen des Betriebssystems nutzen möchte, muss dafür das Windows Management Framework (WMF) 5.1 installieren.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- BitLocker aktivieren mit manage-bde, PowerShell oder WMI
- Programme (remote) mit PowerShell deinstallieren
- Semi-Annual Channel (Targeted): Service-Branch für Windows 10 konfigurieren und auslesen
- Windows 10 1803 kommt mit cURL und tar
- OpenSSH unter Windows 10 und Server 2016 aktivieren, PowerShell-Remoting nutzen
Weitere Links
2 Kommentare
Bei mir wurde neben vielen Leerwerten nur Werte mit Windows* angezeigt und das Ganze dauerte über 30 Sekunden. Mein Windows 10 Pro 64 Bit ist aktuell. (10.0.15063 / 1703)
Bei der Fehlersuche kam ich auf eine englische Seite, in der als Fehlerbehebung das "Aktivieren von WinRM" genannt war.
Das habe ich gemacht und jetzt funktioniert alles wie von Zauberhand in 2-3 Sekunden. :)
Zum Aktivieren von WinRM einfach als Administrator eine CMD Shell starten und winrm quickconfig ausführen.
Vielen Dank, genau das Problem hatte ich auch.