Partager via


Soumission de requêtes pour obtenir des informations de gestion

Une fonctionnalité très utile de WMI est la possibilité de soumettre des requêtes pour obtenir des données et d'extraire des sous-ensembles d'informations en fonction de critères spécifiques. Dans un scénario distribué, la requête est exécutée près de la source d'information (sur l'ordinateur d'où proviennent les données) pour des raisons d'efficacité, et seuls les résultats sont envoyés à travers le réseau. Pour plus d'informations sur les requêtes dans WMI, consultez la documentation WMI dans MSDN.

L'exemple de code suivant montre comment appeler une requête à l'aide de la classe ManagementObjectSearcher. Vous pouvez soit spécifier la requête sous la forme d'une chaîne au format WQL pris en charge par WMI, soit la construire en utilisant les classes de requête disponibles. Dans l'exemple, la classe SelectQuery est utilisée pour spécifier une demande portant uniquement sur des variables d'environnement système. Les résultats sont retournés dans une collection énumérable.

using System;
using System.Management;

// This example demonstrates how to perform an object query.

public class QueryInstances {
    public static int Main(string[] args) {
      // Create a query for system environment variables only
      SelectQuery query = 
         new SelectQuery("Win32_Environment", "UserName=\"<SYSTEM>\"");

      // Initialize an object searcher with this query
      ManagementObjectSearcher searcher = 
         new ManagementObjectSearcher(query);

      // Get the resulting collection and loop through it
      foreach (ManagementBaseObject envVar in searcher.Get()) {
         Console.WriteLine("System environment variable {0} = {1}", 
            envVar["Name"], envVar["VariableValue"]);
      }
      return 0;
    }
}

[Visual Basic]
Imports System
Imports System.Management

' This example demonstrates how to perform an object query.

Public Class QueryInstances
   Overloads Public Shared Function Main(args() As String) As Integer
      ' Create a query for system environment variables only
      Dim query As _
         New SelectQuery("Win32_Environment", "UserName=""<SYSTEM>""")

      ' Initialize an object searcher with this query
      Dim searcher As New ManagementObjectSearcher(query)

      ' Get the resulting collection and loop through it
      Dim envVar As ManagementBaseObject
      For Each envVar In  searcher.Get()
       Console.WriteLine("System environment variable {0} = {1}", _
          envVar("Name"), envVar("VariableValue"))
      Next envVar
      Return 0
   End Function 
End Class

Voir aussi

Accès aux informations de gestion avec System.Management | Extraction de collections d'objets de gestion | Abonnement à des événements de gestion et consommation de ces événements | Exécution de méthodes sur des objets de gestion | Options d'accès distant et de connexion | Utilisation d'objets fortement typés