/ / Geek School: Verwenden von PowerShell zum Abrufen von Computerinformationen

Geek School: Verwenden von PowerShell zum Abrufen von Computerinformationen

WMI und sein neuerer Bruder CIM können beide zum Verwalten der Windows-Computer in Ihrer Umgebung verwendet werden. Aber kennst du den Unterschied zwischen ihnen? Begleiten Sie uns, während wir einen Blick darauf werfen.

Lesen Sie unbedingt die vorherigen Artikel in der Reihe:

  • Erfahren Sie, wie Sie Windows mit PowerShell automatisieren
  • Lernen, Cmdlets in PowerShell zu verwenden
  • Erlernen der Verwendung von Objekten in PowerShell
  • Lernen des Formatierens, Filterns und Vergleichens in PowerShell
  • Erfahren Sie, wie Sie Remoting in PowerShell verwenden

Und bleiben Sie für den Rest der Serie die ganze Woche dran.

Einführung

WMI steht für Windows Management Instrumentation. Das Wort „Instrumentierung“ bezieht sich auf die Tatsache, dass Sie mit WMI Informationen über den internen Zustand Ihres Computers abrufen können, ähnlich wie die Armaturenbrettinstrumente in Ihrem Auto Informationen über den Zustand der internen Komponenten Ihres Autos abrufen und anzeigen können.

WMI besteht aus einem Repository, das enthältKlassen, die Komponenten darstellen, die in Ihrem Computer verwaltet werden können. Damit ist gemeint, dass WMI über eine Win32_Battery-Klasse verfügt. Dies bedeutet jedoch nicht, dass Ihr Computer eine Batterie enthält. Diese Klassen können dann mit einer Abfragesprache, die SQL mit dem Namen WQL sehr ähnlich ist, lokal oder sogar netzwerkweit nach Informationen abgefragt werden. Es ist jedoch bekannt, dass WMI sehr unzuverlässig ist, hauptsächlich aufgrund der Tatsache, dass es auf RPC (Remote Procedure Calls) basiert, die mit den Ports, über die sie kommunizieren, einige verrückte Dinge tun.

Ab Windows 8 und Server 2012 ist WMIschrittweise zugunsten des Common Information Model (kurz CIM) eingestellt. Der einzige Unterschied zwischen WMI und CIM besteht in den verwendeten Transportprotokollen. Während WMI Abfragen mithilfe von Remoteprozeduraufrufen ausführt, verwendet CIM HTTP, was einen großen Unterschied zu bedeuten scheint. Im Backend wird immer noch mit demselben Informationsspeicher gesprochen.

Verwenden von WMI

Der schnellste und einfachste Weg, das zu erkundenInformationen, die Ihnen über WMI zur Verfügung stehen, sind, eine Kopie eines kostenlosen WMI-Objektbrowsers zu erhalten. Wir mögen dieses. Sobald Sie es heruntergeladen haben, starten Sie es und Sie haben eine grafische Oberfläche zum Durchsuchen der WMI-Klassen.

Bild

Wenn Sie etwas über die Festplattenkonfiguration eines Computers erfahren möchten, drücken Sie die Tastenkombination Strg + F, um ein Suchfeld aufzurufen, geben Sie "Logische Festplatte" ein und drücken Sie die Eingabetaste.

Bild

Sie gelangen sofort zur Klasse Win32_LogicalDisk.

Bild

In der unteren Hälfte der Anwendung sehen Sie zwei Instanzen der Klasse.

Bild

Sobald wir die Klasse haben, nach der wir suchen, ist es einfach, sie von PowerShell aus abzufragen.

Get-WmiObject -Query "SELECT * FROM Win32_LogicalDisk"

Bild

Ich habe diese Syntax schon eine Weile nicht mehr gesehen. Heutzutage bevorzugen die Leute die neue parametrisierte Syntax.

Get-WmiObject –Class Win32_LogicalDisk

Bild

Wenn Sie die Informationen von einem anderen Computer in Ihrem Netzwerk abrufen möchten, können Sie einfach den Parameter ComputerName verwenden.

Get-WmiObject -Class Win32_LogicalDisk -ComputerName Viper - Berechtigter Viperadministrator

Bild

CIM verwenden

Wenn man bedenkt, dass CIM nur unter Windows 8 und Server 2012 verfügbar ist, ist dies definitiv der richtige Weg.

Get-CimInstance –ClassName Win32_LogicalDisk

Bild

Wenn Sie Get-CimInstance verwenden, wird der Parameter –ClassName auch durch Tabulatoren vervollständigt. Dies zeigt, dass sich die Bemühungen von Microsoft in Zukunft darauf konzentrieren werden.

In der Tat wurde WMI von einem vollständig entwickeltSeparates Team innerhalb von Microsoft, wurde jedoch später von den für PowerShell Verantwortlichen übernommen. Sie waren diejenigen, die bemerkt haben, dass es sehr schwierig sein wird, das hinterlassene Chaos in der WMI zu beseitigen. Um Abhilfe zu schaffen, versuchen sie, WMI und CIM durch Schreiben von Wrapper-Cmdlets, die WMI und CIM verwenden, verfügbarer zu machen. In der Dokumentation können Sie nur überprüfen, ob es sich bei einem Cmdlet um einen Wrapper handelt. Das Cmdlet Get-Hotfix ist beispielsweise ein Wrapper für die Klasse Win32_QuickFixEngineering (siehe Dokumentation).

Bild

Das bedeutet, dass Sie die Hotfixes auf Remotecomputern mithilfe des Cmdlets Get-HotFix anstelle einer WMI-Abfrage abrufen können.

Get-HotFix - Computername localhost

Bild

Also da hast du es. Denken Sie daran, dass Sie ein dediziertes Cmdlet immer verwenden möchten, gefolgt von CIM, falls es kein Cmdlet gibt. Wenn alles andere fehlschlägt oder Sie ältere Computer in Ihrer Umgebung haben, möchten Sie schließlich WMI verwenden. Das ist alles, was ich für diese Zeit habe. Wir sehen uns morgen für mehr PowerShell-Spaß.