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