Esecuzione di query per ottenere informazioni di gestione
Una funzionalità molto utile di WMI è la capacità di eseguire query per la ricerca di dati e per il recupero di sottoinsiemi di informazioni in base a determinati criteri. Per una questione di maggiore efficienza, in uno scenario distribuito la query viene eseguita nelle vicinanze dell'origine delle informazioni (sul computer in cui hanno origine i dati) e solo i risultati vengono inviati in rete. Per ulteriori informazioni sulle query in WMI, vedere la documentazione di WMI in MSDN.
Nel seguente esempio di codice viene mostrato come è possibile chiamare una query tramite la classe ManagementObjectSearcher. La query può essere specificata come una stringa nel formato WQL supportato da WMI oppure può essere costruita utilizzando una delle diverse classi di query a disposizione. In questo caso viene utilizzata la classe SelectQuery per specificare una richiesta esclusivamente per variabili di ambiente. I risultati vengono restituiti in un insieme enumerabile.
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
Vedere anche
Accesso alle informazioni di gestione tramite System.Management | Recupero di insiemi di oggetti di gestione | Sottoscrizione e utilizzo di eventi | Esecuzione di metodi in oggetti di gestione | Opzioni di servizi remoti e di connessione | Utilizzo di oggetti tipizzati in modo sicuro