THEMA
about_WMI_cmdlets
KURZBESCHREIBUNG
Enthält Hintergrundinformationen über die
Windows-Verwaltungsinstrumentation (Windows Management Instrumentation,
WMI) und Windows PowerShell.
DETAILBESCHREIBUNG
Dieses Thema enthält Informationen zur WMI-Technologie, den WMI-Cmdlets
für Windows PowerShell, zu WMI-basiertem Remoting, WMI-Verknüpfungen und
zur WMI-Problembehandlung. Außerdem enthält dieses Thema Links zu weiteren
Informationen über WMI.
Informationen über WMI
Die Windows-Verwaltungsinstrumentation (Windows Management
Instrumentation, WMI) ist die Microsoft-Implementierung von WBEM
(Web-Based Enterprise Management). Hierbei handelt es sich um eine
Brancheninitiative zum Entwickeln einer Standardtechnologie für den
Zugriff auf Verwaltungsinformationen in einer Unternehmensumgebung.
WMI verwendet den Industriestandard Common Information Model (CIM) zum
Darstellen von Systemen, Anwendungen, Netzwerken, Geräten und anderen
verwalteten Komponenten. CIM wird von der Distributed Management Task
Force (DMTF) entwickelt und verwaltet. Mit WMI können Sie lokale und
Remotecomputer verwalten. Sie können WMI z. B. für Folgendes verwenden:
-- Starten eines Prozesses auf einem Remotecomputer
-- Remoteneustart eines Computers
-- Abrufen einer Liste der auf einem lokalen oder
Remotecomputer installierten Anwendungen
-- Abfragen der Windows-Ereignisprotokolle auf einem lokalen
oder Remotecomputer
Die WMI-Cmdlets für Windows PowerShell
In Windows PowerShell wird WMI-Funktionalität durch Cmdlets
implementiert, die in Windows PowerShell standardmäßig verfügbar sind.
Sie können mit diesen Cmdlets die für die Verwaltung von lokalen und
Remotecomputern erforderlichen End-to-End-Aufgaben ausführen.
Die folgenden WMI-Cmdlets sind enthalten.
Cmdlet Beschreibung
------------------ ----------------------------------------------
Get-WmiObject Ruft Instanzen von WMI-Klassen oder
Informationen über die verfügbaren Klassen ab.
Invoke-WmiMethod Ruft WMI-Methoden auf.
Register-WmiEvent Abonniert ein WMI-Ereignis.
Remove-WmiObject Löscht WMI-Klassen und Instanzen.
Set-WmiInstance Erstellt oder ändert Instanzen von WMI-Klassen.
Beispielbefehle
Mit dem folgenden Befehl werden die BIOS-Informationen für den
lokalen Computer angezeigt.
C:\PS> get-wmiobject win32_bios | format-list *
Mit dem folgenden Befehl werden Informationen zum WinRM-Dienst
für drei Remotecomputer angezeigt.
C:\PS> get-wmiobject -query "select * from win32_service
where name='WinRM'" -computername server01, server01,
server03
Mit dem folgenden komplexeren Befehl werden alle Instanzen eines
Programms beendet.
C:\PS> notepad.exe
C:\PS> $np = get-wmiobject -query "select * from win32_process where name='notepad.exe'"
C:\PS> $np | remove-wmiobject
WMI-basiertes Remoting
Auch wenn die Möglichkeit zum Verwalten eines lokalen Systems mit WMI
hilfreich ist, wird WMI erst durch die Remotingfunktionen zu einem
leistungsstarken Verwaltungstool. WMI stellt mithilfe des Distributed
Component Object Model (DCOM) von Microsoft eine Verbindung mit Systemen
her und verwaltet diese. Möglicherweise müssen Sie einige Systeme für
das Zulassen von DCOM-Verbindungen konfigurieren. Firewalleinstellungen
und gesperrte DCOM-Berechtigungen können verhindern, dass WMI Systeme
remote verwalten kann.
WMI-Typverknüpfungen
Windows PowerShell umfasst WMI-Typverknüpfungen. Diese
WMI-Typverknüpfungen ermöglichen einen direkteren Zugriff auf
WMI-Objekte als dies bei einem Ansatz ohne Typverknüpfungen möglich wäre.
Die folgenden Typverknüpfungen werden in WMI unterstützt:
[WMISEARCHER] - Eine Verknüpfung zum Suchen von WMI-Objekten.
[WMICLASS] - Eine Verknüpfung zum Zugriff auf die statischen
Eigenschaften und Methoden einer Klasse.
[WMI] - Eine Verknüpfung zum Abrufen einer einzelnen Instanz
einer Klasse.
[WMISEARCHER] ist eine Typverknüpfung für einen ManagementObjectSearcher.
Hiermit kann ein Zeichenfolgenkonstruktor einen Searcher erstellen,
für den Sie dann GET() ausführen können.
Beispiel:
PS> $s = [WmiSearcher]'Select * from Win32_Process where Handlecount > 1000'
PS> $s.Get() |sort handlecount |ft handlecount,__path,name -auto
handlecount __PATH name
----------- ------ ----
1105 \\SERVER01\root\cimv2:Win32_Process.Handle="3724" powershell...
1132 \\SERVER01\root\cimv2:Win32_Process.Handle="1388" winlogon.exe
1495 \\SERVER01\root\cimv2:Win32_Process.Handle="2852" iexplore.exe
1699 \\SERVER01\root\cimv2:Win32_Process.Handle="1204" OUTLOOK.EXE
1719 \\SERVER01\root\cimv2:Win32_Process.Handle="1912" iexplore.exe
2579 \\SERVER01\root\cimv2:Win32_Process.Handle="1768" svchost.exe
[WMICLASS] ist eine Typverknüpfung für ManagementClass. Diese verfügt
über einen Zeichenfolgenkonstruktor, der einen lokalen oder absoluten
WMI-Pfad für eine WMI-Klasse annimmt und ein an diese Klasse gebundenes
Objekt zurückgibt.
Beispiel:
PS> $c = [WMICLASS]"root\cimv2:WIn32_Process"
PS> $c |fl *
Name : Win32_Process
__GENUS : 1
__CLASS : Win32_Process
__SUPERCLASS : CIM_Process
__DYNASTY : CIM_ManagedSystemElement
__RELPATH : Win32_Process
__PROPERTY_COUNT : 45
__DERIVATION : {CIM_Process, CIM_LogicalElement, CIM_ManagedSystemElement}
__SERVER : SERVER01
__NAMESPACE : ROOT\cimv2
__PATH : \\SERVER01\ROOT\cimv2:Win32_Process
[WMI] ist eine Typverknüpfung für ManagementObject. Diese verfügt über
einen Zeichenfolgenkonstruktor, der einen lokalen oder absoluten
WMI-Pfad für eine WMI-Instanz annimmt und ein an diese Instanz
gebundenes Objekt zurückgibt.
Beispiel:
PS> $p = [WMI]'\\SERVER01\root\cimv2:Win32_Process.Handl
e="1204"'
PS> $p.Name
OUTLOOK.EXE
WMI-Problembehandlung
Bei den folgenden Problemen handelt es sich um die am häufigsten
auftretenden Probleme beim Herstellen einer Verbindung mit
einem Remotecomputer.
Problem 1: Der Remotecomputer ist nicht online.
Wenn ein Computer offline ist, können Sie nicht über WMI eine
Verbindung herstellen. Möglicherweise wird die folgende
Fehlermeldung angezeigt:
"Der Remoteservercomputer existiert nicht oder ist nicht verfügbar"
Wenn diese Fehlermeldung angezeigt wird, überprüfen Sie, ob der
Computer online ist. Versuchen Sie, den Remotecomputer zu pingen.
Problem 2: Sie verfügen auf dem Remotecomputer nicht über lokale
Administratorrechte.
Wenn Sie WMI remote verwenden möchten, müssen Sie auf dem Remotecomputer
über lokale Administratorrechte verfügen. Wenn dies nicht der Fall ist,
wird der Zugriff auf diesen Computer verweigert.
So überprüfen Sie die Namespacesicherheit
a. Klicken Sie auf "Start", klicken Sie mit der rechten
Maustaste auf "Arbeitsplatz", und klicken Sie auf "Verwalten".
b. Erweitern Sie in der Computerverwaltung "Dienste und Anwendungen",
klicken Sie mit der rechten Maustaste auf "WMI-Steuerung", und
klicken Sie dann auf "Eigenschaften".
c. Klicken Sie im Dialogfeld "Eigenschaften von WMI-Steuerung" auf
die Registerkarte "Sicherheit".
Problem 3: Eine Firewall blockiert den Zugriff auf den Remotecomputer.
WMI verwendet die Protokolle DCOM (Distributed COM) und RPC (Remote
Procedure Call) für die Übertragung über das Netzwerk. Standardmäßig
blockieren viele Firewalls DCOM- und RPC-Datenverkehr. Wenn Ihre
Firewall diese Protokolle blockiert, tritt bei der Verbindung ein Fehler
auf. Windows-Firewall in Microsoft Windows XP Service Pack 2 ist z. B.
so konfiguriert, dass automatisch der gesamte nicht angeforderte
Netzwerkverkehr blockiert wird, einschließlich DCOM und WMI. In der
Standardkonfiguration lehnt Windows-Firewall eine eingehende
WMI-Anforderung ab, und die folgende Fehlermeldung wird angezeigt:
"Der Remoteservercomputer existiert nicht oder ist nicht verfügbar"
Weitere Informationen zu WMI
Weitere Informationen zu WMI finden Sie in den folgenden Themen
in der MSDN Library (Microsoft Developer Network):
"Informationen über WMI:
https://go.microsoft.com/fwlink/?LinkId=142212
(möglicherweise auf Englisch)
"WMI-Problembehandlung"
https://go.microsoft.com/fwlink/?LinkId=142213
(möglicherweise auf Englisch)
Außerdem finden Sie Informationen im Microsoft TechNet Script Center
unter "Secrets of Windows Management Instrumentation - Troubleshooting
and Tips":
https://go.microsoft.com/fwlink/?LinkId=142214
(möglicherweise auf Englisch)
SIEHE AUCH
Onlineversion: https://go.microsoft.com/fwlink/?LinkId=142219
(möglicherweise auf Englisch)
Get-WmiObject
Invoke-WmiMethod
Register-WmiEvent
Remove-WmiObject
Set-WmiInstance