Freigeben über


Windows-Remoteverwaltung und WMI

Die Windows-Remoteverwaltung kann zum Abrufen von Daten verwendet werden, die von der Windows-Verwaltungsinstrumentation verfügbar gemacht werden (WMI- und MI-). Sie können WMI-Daten mit Skripts oder Anwendungen abrufen, die die WinRM Scripting API oder über das Winrm- Befehlszeilentool verwenden.

WinRM unterstützt die meisten vertrauten WMI-Klassen und -Vorgänge, einschließlich eingebetteter Objekte. WinRM kann WMI nutzen, um Daten zu Ressourcen zu sammeln oder Ressourcen auf einem Windows-basierten Betriebssystem zu verwalten. Das bedeutet, dass Sie Daten zu Objekten wie Datenträgern, Netzwerkadaptern, Diensten oder Prozessen in Ihrem Unternehmen über die vorhandenen WMI-Klassenabrufen können. Sie können auch auf die Hardwaredaten zugreifen, die vom standardmäßigen WMI-IPMI-Anbieterverfügbar sind.

Identifizieren einer WMI-Ressource

Sie können auf eine WMI-Klasse als Ressource in WinRM und im WS-Management Protokoll verweisen: einen Typ von verwalteter Entität, z. B. einen Dienst oder einen Datenträger.

Eine WMI-Klasse oder -Methode wird durch einen URI-identifiziert, genau wie jede andere Ressource bei Verwendung des WS-Management-Protokolls. Der URI kann eine WMI-Ressource (Klasse), eine WMI-Aktion (Methode) angeben oder eine bestimmte Instanz einer Klasse in Nachrichten identifizieren, die über ein Netzwerk gesendet. Weitere Informationen finden Sie unter Ressourcen-URIs.

Erstellen des URI-Präfixes für WMI-Klassen

Das URI-Präfix enthält einen festen Teil und den WMI-Namespace. Beispielsweise lautet das URI-Präfix in Windows Server, das den festen Teil des Präfixes enthält: http://schemas.microsoft.com/wbem/wsman/1/wmi/<WmiNamespace>. Dadurch kann das URI-Präfix für jeden WMI-Namespace generiert werden. Um beispielsweise auf den root\default WMI-Namespace zuzugreifen, verwenden Sie das folgende URI-Präfix: http://schemas.microsoft.com/wbem/wsman/1/wmi/root/default/.

Die meisten WMI-Klassen für die Verwaltung befinden sich im root\cimv2 Namespace. Um auf Klassen und Instanzen in root\cimv2 Namespace zuzugreifen, verwenden Sie das URI-Präfix: http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/. Weitere Informationen finden Sie unter Ressourcen-URIs.

Generieren eines vollständigen URI für WMI-Klassen

Der von Ihnen angegebene URI, entweder an das Winrm- Befehlszeilentool oder an ein Skript, besteht aus dem Präfix plus der Ressourcenspezifikation.

Im folgenden Verfahren wird beschrieben, wie Sie einen Ressourcen-URI generieren, um eine WMI-Klasse abzurufen oder in einem Enumerationsvorgang zu verwenden.

So generieren Sie einen Ressourcen-URI für eine WMI-Klasse

  1. Beginnen Sie mit dem Präfix, das angibt, dass das WS-Management Protokollschema verwendet werden soll.

    https://schemas.microsoft.com/wbem/wsman/1

    Das Ressourcen-URI-Präfix für WMI-Klassen ist immer identisch. Weitere Informationen finden Sie unter URI-Präfixe.

  2. Fügen Sie dem Präfix den WMI-Namespace hinzu.

    http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/

  3. Fügen Sie den Klassennamen hinzu.

    http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service

  4. Um den Wert einer Eigenschaft festzulegen oder eine bestimmte Methode aufzurufen, fügen Sie den erforderlichen Schlüsselwert oder die erforderlichen Werte für die Klasse hinzu.

    http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Winmgmt

    Wenn Sie den Schlüsselwert leer lassen, ändern Sie den ursprünglichen Eigenschaftswert nicht.

    Anmerkung

    Wenn der Schlüsselwert leer bleibt, wird der Eigenschaftswert auf NULL-festgelegt.

     

Suchen einer WMI-Ressource mit WinRM

Sie können WMI-Daten entweder über das Befehlszeilentool, Winrm-oder über ein Visual Basic-Skript abrufen, das die WinRM Scripting APIverwendet. Sie verwenden keinen WMI-Pfad, um eine Ressource zu suchen. Stattdessen konvertieren Sie den WMI-Namespace und die Hierarchie in einen URI-.

Der WinRM-URI für eine WMI-Klasse enthält zwei Teile: das URI-Präfix und die Klasse, auf die Sie zugreifen möchten.

Beispielsweise kann der folgende URI an die Session.Enumerate-Methode bereitgestellt werden, um alle Dienste auf einem Computer aufzulisten. Das URI-Präfix ist http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/, und die Klasse ist Win32_Service.

strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_CurrentTime"

Listen Sie in WMI die Daten für alle Instanzen einer Ressource oder Klasse auf verschiedene Arten auf:

  • Eine Abfrage für alle Instanzen dieser Ressource.

    Set colServices = objWMIService.ExecQuery("Select * from Win32_Service")

  • Ein Aufruf von SWbemServices.InstancesOf oder SWbemObject.Instances_.

    Set colServices = InstancesOf("Win32_Service")

In WinRM gibt es eine Möglichkeit, alle Instanzen einer Ressource auflisten: Session.Enumerate.

strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service"
Set colServices = objSession.Enumerate( strResource )

Suchen einer bestimmten Instanz einer WMI-Ressource

In WMI können Sie eine bestimmte Instanz einer Klasse festlegen, indem Sie entweder Werte für die Schlüsseleigenschaften angeben oder eine Instanz abfragen, die einer Liste von Eigenschaftswerten entspricht. Schlüsseleigenschaften weisen den WMI-Schlüsselqualifiziererauf.

Sie können eine bestimmte Instanz einer Klasse auf verschiedene Arten abrufen:

  • Ein Aufruf Session.Enumerate mit dem Filter und Dialekt parametern zum Erstellen einer Abfrage.

    RemoteComputer = "servername.domain.com"
    strDialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL"
    strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*"
    Set objWsman = CreateObject("Wsman.Automation")
    Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
    
    strFilter = "SELECT * FROM Win32_Share WHERE Name='Admin$'"
    Set objResultSet = objSession.Enumerate(strResource, strFilter, strDialect)
    
  • Ein Aufruf von SWbemServices.Get. Für Session.Getmüssen Sie einen oder mehrere spezifische Schlüsselwerte angeben, die einem Fragezeichen (?) vorausgehen.

    Das Format des URI für eine bestimmte Instanz ist http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/WMI_Class?Key1=Value.

    strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=winmgmt"
    

    Eine WMI-Klasse verfügt möglicherweise über mehrere Schlüssel. Schlüsselnamen-Wert-Paare werden durch ein "+"-Zeichen getrennt. In diesem Fall lautet das Format: http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Key1=Value1+Key2=Value2.

    Die WinRM-Syntax zum Abrufen eines Singleton-WMI-Objekts unterscheidet sich von WMI. Ein Singleton ist eine WMI-Klasse, die so definiert ist, dass nur eine Instanz zulässig ist. Win32_CurrentTime oder Win32_WMISetting sind Beispiele für eine WMI-Singletonklasse.

    Die WMI-Syntax für Singletons wird im folgenden VBScript-Codebeispiel gezeigt.

    Set TimeObject = objWMIService.Get("Win32_CurrentTime=@")
    

    Das folgende Beispiel zeigt die WinRM-Singletonsyntax, die nicht "@" verwendet.

    strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_CurrentTime"
    
  • Hinzufügen eines Selektors zu einem ResourceLocator- oder IWSManResourceLocator-Objekt.

    Im folgenden VBScript-Codebeispiel wird gezeigt, wie Sie mit einer Selektor eine bestimmte Instanz von Win32_Processorabrufen.

    strUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Processor"
    Set objWsman = CreateObject("Wsman.Automation")
    Set Session = objWsman.CreateSession
    Set Locator = objWsman.CreateResourceLocator(strUri)
    Locator.AddSelector "DeviceID", "CPU0"
    

Informationen zur Windows-Remoteverwaltung

URI-Präfixe

Ressourcen-URIs

Skripting in der Windows-Remoteverwaltung