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