Gestion à distance windows et WMI

Windows Remote Management peut être utilisé pour récupérer les données exposées par Windows Management Instrumentation (WMI et MI). Vous pouvez obtenir des données WMI avec des scripts ou des applications qui utilisent l’API de script WinRM ou via l’outil en ligne de commande Winrm .

WinRM prend en charge la plupart des classes et opérations WMI familières, y compris les objets incorporés. WinRM peut tirer parti de WMI pour collecter des données sur les ressources ou pour gérer des ressources sur un système d’exploitation Windows. Cela signifie que vous pouvez obtenir des données sur des objets tels que des disques, des cartes réseau, des services ou des processus dans votre entreprise via l’ensemble existant de classes WMI. Vous pouvez également accéder aux données matérielles disponibles à partir du fournisseur IPMI WMI standard.

Identification d’une ressource WMI

Vous pouvez référencer une classe WMI en tant que ressource dans WinRM et dans le protocole WS-Management : un type d’entité managée, comme un service ou un disque.

Une classe ou une méthode WMI est identifiée par un URI, comme toute autre ressource lors de l’utilisation du protocole WS-Management. L’URI peut spécifier une ressource WMI (classe), une action WMI (méthode) ou identifier un instance spécifique d’une classe dans les messages envoyés sur un réseau. Pour plus d’informations, consultez URI de ressource.

Construction du préfixe d’URI pour les classes WMI

Le préfixe d’URI contient une partie fixe et l’espace de noms WMI. Par exemple, le préfixe d’URI dans Windows Server qui contient la partie fixe du préfixe est : http://schemas.microsoft.com/wbem/wsman/1/wmi/<WmiNamespace>. Cela permet de générer le préfixe d’URI pour n’importe quel espace de noms WMI. Par exemple, pour accéder à l’espace de noms WMI root\default , utilisez le préfixe d’URI suivant : http://schemas.microsoft.com/wbem/wsman/1/wmi/root/default/.

La majorité des classes WMI pour la gestion se trouvent dans l’espace de noms root\cimv2 . Pour accéder aux classes et instances de l’espace de noms root\cimv2 , utilisez le préfixe d’URI : http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/. Pour plus d’informations, consultez URI de ressource.

Génération d’un URI complet pour les classes WMI

L’URI que vous fournissez, soit à l’outil en ligne de commande Winrm , soit à un script, se compose du préfixe et de la spécification de la ressource.

La procédure suivante décrit comment générer un URI de ressource pour obtenir une classe WMI ou pour l’utiliser dans une opération d’énumération.

Pour générer un URI de ressource pour une classe WMI

  1. Commencez par le préfixe qui indique que le schéma de protocole WS-Management doit être utilisé.

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

    Le préfixe d’URI de ressource pour les classes WMI est toujours le même. Pour plus d’informations, consultez Préfixes d’URI.

  2. Ajoutez l’espace de noms WMI au préfixe.

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

  3. Ajoutez le nom de la classe.

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

  4. Pour définir la valeur d’une propriété ou appeler une méthode spécifique, ajoutez la ou les valeurs de clé requises pour la classe .

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

    Si vous laissez la valeur de clé vide, vous ne modifierez pas la valeur de la propriété d’origine.

    Notes

    Laisser la valeur de la clé vide affecte à la propriété la valeur NULL.

     

Localisation d’une ressource WMI avec WinRM

Vous pouvez obtenir des données WMI via l’outil en ligne de commande Winrm ou via un script Visual Basic qui utilise l’API de script WinRM. Vous n’utilisez pas de chemin D’accès WMI pour localiser une ressource. Au lieu de cela, vous convertissez l’espace de noms et la hiérarchie WMI en URI.

L’URI WinRM d’une classe WMI contient deux parties : le préfixe d’URI et la classe à laquelle vous souhaitez accéder.

Par exemple, l’URI suivant peut être fourni à la méthode Session.Enumerate pour répertorier tous les services sur un ordinateur. Le préfixe d’URI est http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/, et la classe est Win32_Service.

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

Dans WMI, répertoriez les données de toutes les instances d’une ressource ou d’une classe de plusieurs façons :

  • Requête pour toutes les instances de cette ressource.

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

  • Appel à SWbemServices.InstancesOf ou SWbemObject.Instances_.

    Set colServices = InstancesOf("Win32_Service")

Dans WinRM, il existe une façon de répertorier toutes les instances d’une ressource : Session.Enumerate.

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

Localisation d’une instance spécifique d’une ressource WMI

Dans WMI, vous pouvez désigner un instance particulier d’une classe en spécifiant des valeurs pour les propriétés de clé ou en interrogeant un instance qui correspond à une liste de valeurs de propriété. Les propriétés de clé ont le qualificateur de clé WMI.

Vous pouvez obtenir un instance spécifique d’une classe de plusieurs façons :

  • Appel à Session.Enumerate avec les paramètres de filtre et de dialecte pour créer une requête.

    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)
    
  • Un appel à SWbemServices.Get. Pour Session.Get, vous devez fournir une ou plusieurs valeurs de clé spécifiques, précédées d’un point d’interrogation (?).

    Le format de l’URI d’un instance spécifique est 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"
    

    Une classe WMI peut avoir plusieurs clés. Les paires nom-valeur de clé sont séparées par un signe « + ». Dans ce cas, le format est : http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Key1=Value1+Key2=Value2.

    La syntaxe WinRM pour obtenir un objet WMI singleton est différente de WMI. Un singleton est une classe WMI définie afin qu’une seule instance soit autorisée. Win32_CurrentTime ou Win32_WMISetting sont des exemples d’une classe singleton WMI.

    La syntaxe WMI pour les singletons est illustrée dans l’exemple de code VBScript suivant.

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

    L’exemple suivant montre la syntaxe winRM singleton qui n’utilise pas « @ ».

    strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_CurrentTime"
    
  • Ajout d’un sélecteur à un objet ResourceLocator ou IWSManResourceLocator .

    L’exemple de code VBScript suivant montre comment utiliser un sélecteur pour obtenir un instance spécifique de Win32_Processor.

    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"
    

À propos de La gestion à distance windows

Préfixes d’URI

URI de ressource

Création de scripts dans la gestion à distance windows