Realizar consultas com WQL
A WMI Query Language (WQL) é um subconjunto do padrão American National Standards Institute Structured Query Language (ANSI SQL) com pequenas alterações semânticas para suportar WMI.
Para obter uma lista completa das palavras-chave WQL suportadas, consulte WQL (SQL para WMI). O uso de palavras-chave SQL para nomes de objetos ou propriedades pode impedir que uma consulta seja analisada. As seguintes palavras-chave SQL são restritas: NULL, TRUEe FALSE.
Observação
Há limites para o número de palavras-chave E e OU que podem ser usadas em consultas WQL. Um grande número de palavras-chave WQL usadas em uma consulta complexa pode causar que o WMI retorne o código de erro WBEM_E_QUOTA_VIOLATION como um valor HRESULT. O limite de palavras-chave WQL depende da complexidade da consulta.
As consultas podem usar a cláusula WHERE para extensão e personalização, embora não seja necessária. A ONDE cláusula é composta por uma propriedade ou palavra-chave, um operador e uma constante. Todas as cláusulas WHERE devem especificar um dos operadores predefinidos incluídos no WQL. Para obter mais informações sobre sintaxe, consulte Cláusula WHERE. Para obter mais informações sobre operadores WQL válidos, consulte Operadores WQL.
Tal como acontece com outras cadeias de caracteres de consulta SQL, podes fazer escape das tuas consultas.
Observação
WQL não suporta consultas ou associações de namespace cruzado. Não é possível consultar todas as instâncias de uma classe especificada que residem em todos os namespaces no computador de destino.
WQL suporta os seguintes tipos de consultas:
Consultas de dados
As consultas de dados são usadas para recuperar instâncias de classe e associações de dados. Eles são o tipo de consulta mais comumente usado em scripts e aplicativos WMI. Para obter mais informações sobre a sintaxe de consultas de dados, consulte Solicitando dados de instância de classe. Para obter mais informações sobre associações, consulte Declaração de uma classe de associações.
Observação
WQL não suporta consultas de tipos de dados de matriz.
O exemplo de consulta de dados a seguir solicita o arquivo de log de eventos chamado "Application" de todas as instâncias do Win32_NTLogEvent.
strComputer = "." Set objWMIService = GetObject("winmgmts:\\" _ & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_NTLogEvent " _ & "WHERE Logfile = 'Application'",,48)
Consultas sobre Eventos
Os consumidores usam consultas de eventos para se registrar e receber notificações de eventos. Os provedores de eventos usam consultas de eventos para se registrar para oferecer suporte a um ou mais eventos. Para obter mais informações sobre consultas de eventos, consulte Recebendo notificações de eventos.
O exemplo de consulta de evento a seguir, realizada por um consumidor de evento temporário, solicita notificação quando a criação de uma nova instância de classe derivada de Win32_NTLogEvent é detectada.
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
Consultas de esquema
As consultas de esquema são usadas para recuperar definições de classe (em vez de instâncias de classe) e associações de esquema. Os provedores de classe usam consultas de esquema para especificar as classes às quais dão suporte quando se registram. Para obter mais informações sobre consultas de esquema, consulte Recuperando definições de classe.
O exemplo de consulta de esquema a seguir mostra a sintaxe especial.
SELECT * FROM meta_class WHERE __this ISA "Win32_BaseService"
Tópicos relacionados