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