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, TRUEe 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 utilizzate 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 ulteriori informazioni sulla sintassi, vedere Clausola WHERE. Per altre informazioni sugli operatori WQL validi, vedere operatori WQL.
Come con altre stringhe di query SQL, è possibile eseguire l'escape delle query.
Nota
WQL non supporta query o associazioni interspaziali dei nomi. Non è possibile effettuare una query per tutte le istanze di una classe specificata che si trova in tutti i namespace sul computer 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 negli script e nelle applicazioni WMI. Per altre informazioni sulla sintassi delle query di dati, vedere Requesting Class Instance Data. Per ulteriori informazioni sulle associazioni, vedere dichiarare 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 log 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 consumatori usano le query di eventi per registrarsi e ricevere la notifica degli eventi. I fornitori di eventi usano le query di evento per registrarsi e supportare uno o più eventi. Per altre informazioni sulle query sugli eventi, vedere Ricezione di notifiche degli eventi.
La seguente query di esempio di eventi da un consumatore di eventi temporaneo 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 di schemi. I provider di classi usano query di schema per specificare le classi supportate durante la registrazione. Per altre informazioni sulle query sullo schema, vedere Recupero di definizioni di classi.
Nella query dello schema di esempio seguente viene illustrata la sintassi speciale.
SELECT * FROM meta_class WHERE __this ISA "Win32_BaseService"
Argomenti correlati