27Aug
WMI und sein neuer Bruder CIM können beide zum Verwalten der Windows-Computer in Ihrer Umgebung verwendet werden. Aber kennen Sie den Unterschied zwischen ihnen? Begleiten Sie uns, wenn wir einen Blick darauf werfen.
Lesen Sie sich die vorherigen Artikel in der Serie durch:
- Erfahren Sie, wie Sie Windows mit PowerShell automatisieren
- Lernen mit Cmdlets in PowerShell
- Lernen Verwenden von Objekten in PowerShell
- Lernen Formatieren, Filtern und Vergleichen in PowerShell
- Lernen Sie Remoting inPowerShell
Und bleibt die ganze Woche auf den Rest der Serie dran.
Einführung
WMI steht für Windows Management Instrumentation. Das Wort "Instrumentierung" bezieht sich auf die Tatsache, dass WMI Ihnen ermöglicht, Informationen über den internen Zustand Ihres Computers zu erhalten, ähnlich wie die Dashboard-Instrumente in Ihrem Auto Informationen über den Zustand Ihrer internen Komponenten Ihres Autos abrufen und anzeigen können.
WMI besteht aus einem Repository, das Klassen enthält, die Komponenten darstellen, die in Ihrem Computer verwaltet werden können. Damit meinen wir, nur weil WMI eine Win32_Battery-Klasse hat, bedeutet das nicht, dass Ihr Computer eine Batterie enthält. Diese Klassen können dann für Informationen lokal oder sogar über ein Netzwerk abgefragt werden, wobei eine Abfragesprache benutzt wird, die sehr ähnlich zu SQL ist und WQL genannt wird. WMI ist jedoch als sehr unzuverlässig bekannt, hauptsächlich aufgrund der Tatsache, dass es auf RPC( Remote Procedure Calls) basiert, die mit den Ports, über die sie kommunizieren, verrückte Dinge tun.
Ab Windows 8 und Server 2012 wird WMI zugunsten des Common Information Model( CIM) abgekündigt. Der einzige Unterschied zwischen WMI und CIM sind die Transportprotokolle, die sie verwenden. Während WMI Abfragen mit Remote Procedure Calls ausführt, verwendet CIM HTTP, was einen großen Unterschied zu machen scheint. Im Backend sprechen sie immer noch mit demselben Informationsspeicher.
Verwenden von WMI
Die schnellste und einfachste Möglichkeit, die Informationen, die Ihnen über WMI zur Verfügung stehen, zu untersuchen, besteht darin, sich eine Kopie eines beliebigen kostenlosen WMI-Objektbrowsers zu besorgen. Wir mögen diesen. Sobald es heruntergeladen wurde, starte es und du wirst eine grafische Oberfläche haben, um die WMI-Klassen zu durchsuchen.
Wenn Sie etwas über die Festplattenkonfiguration eines Computers herausfinden möchten, drücken Sie die Tastenkombination Strg + F, um ein Suchfeld aufzurufen, geben Sie dann logicdisk ein und drücken Sie die Eingabetaste.
Dies führt Sie sofort zur Klasse Win32_LogicalDisk.
In der unteren Hälfte der Anwendung können Sie sehen, dass wir zwei Instanzen der Klasse haben.
Sobald wir die Klasse haben, nach der wir suchen, ist die Abfrage von PowerShell einfach.
Get-WmiObject -Query "SELECT * FROM Win32_LogicalDisk"
Ich habe diese Syntax für eine Weile nicht mehr gesehen, da Leute heutzutage lieber die neue parametrisierte Syntax verwenden.
Get-WmiObject - Klasse Win32_LogicalDisk
Wenn Sie die Informationen von einem anderen Computer in Ihrem Netzwerk abrufen möchten, können Sie einfach den ComputerName-Parameter verwenden.
Get-WmiObject -Klasse Win32_LogicalDisk -ComputerName Viper -Credential Viper \ Administrator
Verwenden von CIM
Wenn man bedenkt, dass CIM nur unter Windows 8 und Server 2012 verfügbar ist, ist dies definitiv der richtige Weg.
Get-CimInstance -Klassenname Win32_LogicalDisk
Bei Verwendung von Get-CimInstance gibt es auch eine Tabulatorvervollständigung für den Parameter "-ClassName". Dies zeigt, dass Microsofts Bemühungen in Zukunft darauf ausgerichtet sind.
Tatsächlich wurde WMI von einem völlig separaten Team innerhalb von Microsoft entwickelt, wurde aber anschließend von den Verantwortlichen von PowerShell übernommen. Sie waren diejenigen, die gemerkt haben, dass es sehr schwer sein wird, das Chaos, das WMI hinterlassen hat, zu säubern. In einem Versuch, die Situation zu beheben, versuchen sie, WMI und CIM verfügbarer zu machen, indem sie Wrapper-Cmdlets schreiben, die WMI und CIM unter der Haube verwenden. Die einzige Möglichkeit zu überprüfen, ob ein Cmdlet ein Wrapper ist, finden Sie in der Dokumentation. Beispielsweise ist das Get-Hotfix-Cmdlet ein Wrapper für die Win32_QuickFixEngineering-Klasse, wie in der Dokumentation zu sehen ist.
Das bedeutet, dass Sie die Hotfixes auf Remote-Computern mithilfe des Cmdlets Get-HotFix anstelle einer WMI-Abfrage abrufen können.
Get-HotFix -ComputerName localhost
So, Sie haben es. Denken Sie daran, dass ein dediziertes Cmdlet immer verwendet werden soll, gefolgt von CIM, falls ein Cmdlet nicht existiert. Wenn alles andere fehlschlägt oder in Ihrer Umgebung ältere Maschinen vorhanden sind, sollten Sie WMI verwenden. Das ist alles was ich für diese Zeit habe. Wir sehen uns morgen für mehr PowerShell-Spaß.