Abrufen von WMI-Objekten mit „Get-CimInstance“
Dieses Beispiel gilt nur für Windows-Plattformen.
Windows-Verwaltungsinstrumentation (Windows Management Instrumentation, WMI) ist eine Kerntechnologie für die Windows-Systemadministration, denn sie macht eine Vielzahl von Informationen auf einheitliche Weise verfügbar. Dank der zahlreichen Möglichkeiten von WMI ist das PowerShell-Cmdlet Get-CimInstance
zum Zugriff auf WMI-Objekte eines der nützlichsten Cmdlets für die eigentliche Arbeit. Es wird zunächst erläutert, wie mit CIM-Cmdlets auf WMI-Objekte zugegriffen werden kann, und anschließend wird erläutert, wie WMI-Objekte zum Ausführen bestimmter Aufgaben verwendet werden können.
Auflisten von WMI-Klassen
Das erste Problem, das die meisten WMI-Benutzer*innen haben, besteht im Herausfinden, was mit WMI erledigt werden kann. WMI-Klassen beschreiben die Ressourcen, die verwaltet werden können. Es gibt Hunderte von WMI-Klassen, von denen einige Dutzende von Eigenschaften enthalten.
Get-CimClass
löst dieses Problem, indem es WMI auswertbar macht. Sie können eine Liste der WMI-Klassen, die auf dem lokalen Computer verfügbar sind, durch folgende Eingabe abrufen:
Get-CimClass -Namespace root/CIMV2 |
Where-Object CimClassName -like Win32* |
Select-Object CimClassName
CimClassName
------------
Win32_DeviceChangeEvent
Win32_SystemConfigurationChangeEvent
Win32_VolumeChangeEvent
Win32_SystemTrace
Win32_ProcessTrace
Win32_ProcessStartTrace
Win32_ProcessStopTrace
Win32_ThreadTrace
Win32_ThreadStartTrace
Win32_ThreadStopTrace
...
Sie können die gleichen Informationen von einem Remotecomputer abrufen, indem Sie den ComputerName-Parameter verwenden und für diesen einen Computernamen oder eine IP-Adresse angeben:
Get-CimClass -Namespace root/CIMV2 -ComputerName 192.168.1.29
Die Klassenauflistungen, die von Remotecomputern zurückgegeben werden, können je nach Betriebssystem des jeweiligen Computers und den bestimmten WMI-Erweiterungen, die durch installierte Programme hinzugefügt wurden, unterschiedlich sein.
Hinweis
Bei Verwendung von CIM-Cmdlets zum Herstellen einer Verbindung mit einem Remotecomputer muss WMI auf dem Remotecomputer ausgeführt werden, und das von Ihnen verwendete Konto muss der Gruppe der lokalen Administratoren auf dem Remotecomputer angehören. Es ist nicht erforderlich, dass PowerShell auf dem Remotesystem installiert ist. Auf diese Weise können Sie Betriebssysteme verwalten, auf denen PowerShell nicht ausgeführt wird, für die aber WMI verfügbar ist.
Anzeigen von WMI-Klassendetails
Wenn Sie den Namen einer WMI-Klasse bereits kennen, können Sie ihn verwenden, um Informationen sofort abzurufen. Eine der WMI-Klassen, die häufig verwendet werden, um Informationen zu einem Computer abzurufen, ist z.B. Win32_OperatingSystem.
Get-CimInstance -Class Win32_OperatingSystem
SystemDirectory Organization BuildNumber RegisteredUser SerialNumber Version
--------------- ------------ ----------- -------------- ------------ -------
C:\WINDOWS\system32 Microsoft 22621 USER1 00330-80000-00000-AA175 10.0.22621
Obwohl hier alle Parameter gezeigt sind, kann der Befehl auf kompaktere Weise formuliert werden.
Der ComputerName-Parameter ist beim Verbinden mit dem lokalen System nicht erforderlich. Er ist aufgeführt, um den allgemeinsten Fall zu veranschaulichen und Sie an den Parameter zu erinnern. Als Namespace wird standardmäßig root/CIMV2
verwendet, sodass auch dieser Parameter fehlen kann. Grundsätzlich gilt, dass es bei den meisten Cmdlets zulässig ist, die Namen von allgemeinen Parametern wegzulassen. Wird bei Get-CimInstance
kein Name für den ersten Parameter angegeben, geht PowerShell davon aus, dass es sich um den Class-Parameter handelt. Dies bedeutet, dass der letzte Befehl mit folgender Eingabe ausgeführt werden kann:
Get-CimInstance Win32_OperatingSystem
Die Win32_OperatingSystem-Klasse hat viel mehr Eigenschaften als hier aufgeführt sind. Sie können „Get-Member“ verwenden, um alle Eigenschaften anzuzeigen. Die Eigenschaften einer WMI-Klasse sind automatisch wie andere Objekteigenschaften verfügbar:
Get-CimInstance -Class Win32_OperatingSystem | Get-Member -MemberType Property
TypeName: Microsoft.Management.Infrastructure.CimInstance#root/cimv2/Win32_OperatingSystem
Name MemberType Definition
---- ---------- ----------
BootDevice Property string BootDevice {get;}
BuildNumber Property string BuildNumber {get;}
BuildType Property string BuildType {get;}
Caption Property string Caption {get;}
CodeSet Property string CodeSet {get;}
CountryCode Property string CountryCode {get;}
CreationClassName Property string CreationClassName {get;}
CSCreationClassName Property string CSCreationClassName {get;}
CSDVersion Property string CSDVersion {get;}
CSName Property string CSName {get;}
CurrentTimeZone Property int16 CurrentTimeZone {get;}
DataExecutionPrevention_32BitApplications Property bool DataExecutionPrevention_32BitApplications {get;}
DataExecutionPrevention_Available Property bool DataExecutionPrevention_Available {get;}
...
Anzeigen von Nicht-Standardeigenschaften mit Format-Cmdlets
Wenn Sie Informationen anzeigen möchten, die in der Win32_OperatingSystem-Klasse enthalten sind, aber nicht standardmäßig angezeigt werden, verwenden Sie die Format-Cmdlets. Wenn Sie beispielsweise die verfügbaren Arbeitsspeicherdaten anzeigen möchten, geben Sie Folgendes ein:
Get-CimInstance -Class Win32_OperatingSystem | Format-Table -Property TotalVirtualMemorySize, TotalVisibleMemorySize, FreePhysicalMemory, FreeVirtualMemory, FreeSpaceInPagingFiles
TotalVirtualMemorySize TotalVisibleMemorySize FreePhysicalMemory FreeVirtualMemory FreeSpaceInPagingFiles
---------------------- ---------------------- ------------------ ----------------- ----------------------
41787920 16622096 9537952 33071884 25056628
Hinweis
Platzhalter können für Eigenschaftsnamen in Format-Table
verwendet werden. Das letzte Pipelineelement kann daher auf Format-Table -Property Total*Memory*, Free*
reduziert werden.
Die Arbeitsspeicherdaten lassen sich möglicherweise besser lesen, wenn Sie sie durch die folgende Eingabe als Liste formatieren:
Get-CimInstance -Class Win32_OperatingSystem | Format-List Total*Memory*, Free*
TotalVirtualMemorySize : 41787920
TotalVisibleMemorySize : 16622096
FreePhysicalMemory : 9365296
FreeSpaceInPagingFiles : 25042952
FreeVirtualMemory : 33013484
Name : Microsoft Windows 11 Pro|C:\Windows|\Device\Harddisk0\Partition2