Esecuzione di query con WQL
WMI Query Language (WQL) è un subset di standard American National Standards Institute Structured Query Language (ANSI SQL) con modifiche semantiche secondarie per supportare WMI.
Per un elenco completo delle parole chiave WQL supportate, vedere WQL (SQL per WMI). L'uso di parole chiave SQL per i nomi di oggetti o proprietà può limitare l'analisi di una query. Le parole chiave SQL seguenti sono limitate: NULL, TRUE e FALSE.
Nota
Esistono limiti al numero di parole chiave AND e OR che possono essere usate nelle query WQL. Un numero elevato di parole chiave WQL usate in una query complessa può causare la restituzione del codice di errore WBEM_E_QUOTA_VIOLATION come valore HRESULT . Il limite di parole chiave WQL dipende dalla complessità della query.
Le query possono usare la clausola WHERE per l'estensione e la personalizzazione, anche se non è necessaria. La clausola WHERE è costituita da una proprietà o una parola chiave, un operatore e una costante. Tutte le clausole WHERE devono specificare uno degli operatori predefiniti inclusi in WQL. Per altre informazioni sulla sintassi, vedere Clausola WHERE. Per altre informazioni sugli operatori WQL validi, vedere Operatori WQL.
Come per altre stringhe di query SQL, è possibile eseguire l'escape delle query.
Nota
WQL non supporta query o associazioni tra spazi dei nomi. Non è possibile eseguire una query per tutte le istanze di una classe specificata che risiede in tutti gli spazi dei nomi nel computer di destinazione.
WQL supporta i tipi di query seguenti:
Query di dati
Le query di dati vengono usate per recuperare istanze di classe e associazioni di dati. Sono il tipo di query più comunemente usato in script e applicazioni WMI. Per altre informazioni sulla sintassi delle query sui dati, vedere Requesting Class Instance Data.For more information about the syntax of datas data, see Requesting Class Instance Data. Per altre informazioni sulle associazioni, vedere Dichiarazione di una classe di associazione.
Nota
WQL non supporta query di tipi di dati di matrice.
Nell'esempio di query di dati seguente viene richiesto il file di registro eventi denominato "Application" da tutte le istanze di Win32_NTLogEvent.
strComputer = "." Set objWMIService = GetObject("winmgmts:\\" _ & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_NTLogEvent " _ & "WHERE Logfile = 'Application'",,48)
Query di eventi
I consumer usano query di eventi per la registrazione per ricevere la notifica degli eventi. I provider di eventi usano query di evento per la registrazione per supportare uno o più eventi. Per altre informazioni sulle query sugli eventi, vedere Ricezione di notifiche degli eventi.
La query di evento di esempio seguente da un consumer di eventi temporanei richiede una notifica quando viene creata una nuova istanza di una classe derivata da Win32_NTLogEvent .
strComputer = "." Set objWMIService = GetObject("winmgmts:\\" _ & strComputer & "\root\CIMV2") Set objEvents = objWMIService.ExecNotificationQuery _ ("SELECT * FROM __InstanceModificationEvent WITHIN 10 WHERE " & _ "TargetInstance ISA 'Win32_Service'" & _ " AND TargetInstance._Class = 'win32_TerminalService'") i = TRUE Do While i = TRUE Set strReceivedEvent = objEvents.NextEvent 'report an event Wscript.Echo "An event has occurred." Loop
Query dello schema
Le query dello schema vengono usate per recuperare le definizioni di classe (anziché le istanze di classe) e le associazioni dello schema. I provider di classi usano query dello schema per specificare le classi supportate durante la registrazione. Per altre informazioni sulle query dello schema, vedere Recupero delle definizioni di classe.
Nella query dello schema di esempio seguente viene illustrata la sintassi speciale.
SELECT * FROM meta_class WHERE __this ISA "Win32_BaseService"
Argomenti correlati