Abrufen von WMI-Objekten (Get-WmiObject)

WMI (Windows Management Instrumentation, Windows-Verwaltungsinstrumentation) ist eine Kerntechnologie der Windows-Systemverwaltung, weil diese eine Vielzahl von Informationen einheitlich verfügbar macht. Durch die vielen Möglichkeiten von WMI ist das Windows PowerShell-Cmdlet für den Zugriff auf WMI-Objekte, Get-WmiObject, eines der wichtigsten Cmdlets für die tägliche Arbeit. Im Folgenden werden der Zugriff auf WMI-Objekte mit Get-WmiObject sowie bestimmte Aufgaben mit WMI-Objekten beschrieben.

Auflisten von WMI-Klassen

Bei der ersten Verwendung von WMI sind Benutzer häufig mit dem Problem konfrontiert, dass sie gar nicht wissen, welche Aufgaben sich mit WMI überhaupt durchführen lassen. WMI-Klassen beschreiben die Ressourcen, die verwaltet werden können. Es gibt Hunderte von WMI-Klassen, die z. T. Dutzende Eigenschaften enthalten.

Dieses Problem kann mit Get-WmiObject gelöst werden, da WMI damit auffindbar gemacht wird. Sie können eine Liste der auf dem lokalen Computer verfügbaren WMI-Klassen abrufen, indem Sie Folgendes eingeben:

PS> Get-WmiObject -List


__SecurityRelatedClass                  __NTLMUser9X
__PARAMETERS                            __SystemSecurity
__NotifyStatus                          __ExtendedStatus
Win32_PrivilegesStatus                  Win32_TSNetworkAdapterSettingError
Win32_TSRemoteControlSettingError       Win32_TSEnvironmentSettingError
...

Sie können dieselben Informationen auch von einem Remotecomputer abrufen, indem Sie mit dem ComputerName-Parameter einen Computernamen oder eine IP-Adresse angeben:

PS> Get-WmiObject -List -ComputerName 192.168.1.29


__SystemClass                           __NAMESPACE
__Provider                              __Win32Provider
__ProviderRegistration                  __ObjectProviderRegistration
...

Die von Remotecomputern zurückgegebene Klassenauflistung kann abhängig vom Betriebssystem auf dem Computer und den WMI-Erweiterungen abweichen, die durch installierte Anwendungen hinzugefügt wurden.

Hinweis:

Wenn Sie mit Get-WmiObject eine Verbindung mit einem Remotecomputer herstellen, muss auf diesem WMI ausgeführt werden. Außerdem muss das von Ihnen verwendete Konto in der Standardkonfiguration zur Gruppe der lokalen Administratoren auf dem Remotecomputer gehören. Auf dem Remotesystem muss Windows PowerShell nicht installiert sein. Dadurch können Sie Betriebssysteme verwalten, auf denen keine Windows PowerShell installiert ist, aber WMI verfügbar ist.

Sie können ComputerName sogar beim Verbinden mit dem lokalen System verwenden. Als Computernamen können Sie den Namen des lokalen Computers, dessen IP-Adresse (oder die Loopbackadresse 127.0.0.1) oder das WMI-Format (".") verwenden. Wenn Sie Windows PowerShell auf dem Computer "Admin01" mit der IP-Adresse 192.168.1.90 ausführen, geben alle folgenden Befehle die WMI-Klassenauflistung für diesen Computer zurück:

Get-WmiObject -List
Get-WmiObject -List -ComputerName .
Get-WmiObject -List -ComputerName Admin01
Get-WmiObject -List -ComputerName 192.168.1.90
Get-WmiObject -List -ComputerName 127.0.0.1
Get-WmiObject -List -ComputerName localhost

Get-WmiObject verwendet standardmäßig den Namespace "root/cimv2". Wenn Sie einen anderen WMI-Namespace verwenden möchten, geben Sie mit dem Namespace-Parameter den entsprechenden Namespacepfad an:

PS> Get-WmiObject -List -ComputerName 192.168.1.29 -Namespace root


__SystemClass                           __NAMESPACE
__Provider                              __Win32Provider
...

Anzeigen von Einzelheiten zu WMI-Klassen

Wenn Sie den Namen einer WMI-Klasse bereits kennen, können Sie mit diesem sofort Informationen abrufen. Häufig wird zum Abrufen von Informationen zu einem Computer die Win32_OperatingSystem-WMI-Klasse verwendet.

PS> Get-WmiObject -Class Win32_OperatingSystem -Namespace root/cimv2 -ComputerName .


SystemDirectory : C:\WINDOWS\system32
Organization    : Global Network Solutions
BuildNumber     : 2600
RegisteredUser  : Oliver W. Jones
SerialNumber    : 12345-678-9012345-67890
Version         : 5.1.2600

Hier werden alle Parameter angezeigt, doch es ist auch noch ein kompakterer Ausdruck möglich. Der ComputerName-Parameter ist zum Verbinden mit dem lokalen System nicht erforderlich. Er dient hier nur zur Darstellung der allgemeinen Verwendung und zur Erinnerung an diesen Parameter. Namespace besitzt den Standardwert "root/cimv2" und kann daher ebenfalls ausgelassen werden. Und schließlich erlauben die meisten Cmdlets das Auslassen des Namens häufig verwendeter Parameter. Wenn für den ersten Parameter von Get-WmiObject kein Name angegeben wird, dieser von Windows PowerShell als Class-Parameter behandelt. Daher hätte der letzte Befehl auch folgendermaßen eingegeben werden können:

Get-WmiObject Win32_OperatingSystem

Die Win32_OperatingSystem-Klasse verfügt über weit mehr Eigenschaften als hier aufgeführt sind. Sie können mit Get-Member alle Eigenschaften anzeigen. Die Eigenschaften einer WMI-Klasse sind automatisch verfügbar, wie auch andere Objekteigenschaften:

PS> Get-WmiObject -Class Win32_OperatingSystem -Namespace root/cimv2 -ComputerName . | Get-Member -MemberType Property


   TypeName: System.Management.ManagementObject#root\cimv2\Win32_OperatingSyste
m

Name                                      MemberType Definition
----                                      ---------- ----------
__CLASS                                   Property   System.String __CLASS {...
...
BootDevice                                Property   System.String BootDevic...
BuildNumber                               Property   System.String BuildNumb...
...

Anzeigen weiterer Eigenschaften mit Format-Cmdlets

Wenn Sie Informationen in der Win32_OperatingSystem-Klasse anzeigen möchten, die standardmäßig nicht angezeigt werden, können Sie die Format-Cmdlets verwenden. Wenn Sie z. B. die verfügbaren Arbeitsspeicherdaten anzeigen möchten, geben Sie Folgendes ein:

PS> Get-WmiObject -Class Win32_OperatingSystem -Namespace root/cimv2 -ComputerName . | Format-Table -Property TotalVirtualMemorySize,TotalVisibleMemorySize,FreePhysicalMemory,FreeVirtualMemory,FreeSpaceInPagingFiles

TotalVirtualMemorySize TotalVisibleMem FreePhysicalMem FreeVirtualMemo FreeSpaceInPagi
                              ory              ry         ngFiles
--------------- --------------- --------------- --------------- ---------------
        2097024          785904          305808         2056724         1558232
Hinweis:

Platzhalter können mit Eigenschaftennamen in Format-Table verwendet werden, daher kann das abschließende Pipelineelement zu Format-Table -Property TotalV*,Free* reduziert werden.

Die Arbeitsspeicherdaten sind einfacher zu lesen, wenn Sie sie als Liste formatieren:

PS> Get-WmiObject -Class Win32_OperatingSystem -Namespace root/cimv2 -ComputerName . | Format-List TotalVirtualMemorySize,TotalVisibleMemorySize,FreePhysicalMemory,FreeVirtualMemory,FreeSpaceInPagingFiles


TotalVirtualMemorySize : 2097024
TotalVisibleMemorySize : 785904
FreePhysicalMemory     : 301876
FreeVirtualMemory      : 2056724
FreeSpaceInPagingFiles : 1556644




Inhaltsverzeichnis