Query's uitvoeren met WQL
WMI Query Language (WQL) is een subset van de standaard Amerikaanse National Standards Institute Structured Query Language (ANSI SQL) met kleine semantische wijzigingen ter ondersteuning van WMI.
Voor een volledige lijst van ondersteunde WQL-trefwoorden, zie WQL (SQL voor WMI). Als u SQL-trefwoorden gebruikt voor object- of eigenschapsnamen, kan het moeilijk zijn om een query te verwerken. De volgende SQL-trefwoorden zijn beperkt: NULL-, TRUEen FALSE.
Notitie
Er gelden limieten voor het aantal AND- en OR-trefwoorden dat kan worden gebruikt in WQL-query's. Grote aantallen WQL-trefwoorden die in een complexe query worden gebruikt, kunnen ertoe leiden dat WMI de WBEM_E_QUOTA_VIOLATION foutcode retourneert als een HRESULT- waarde. De limiet van WQL-trefwoorden is afhankelijk van hoe complex de query is.
Query's kunnen gebruikmaken van de WHERE--component voor uitbreiding en aanpassing, hoewel dit niet vereist is. De component WHERE bestaat uit een eigenschap of trefwoord, een operator en een constante. Alle WHERE--componenten moeten een van de vooraf gedefinieerde operators opgeven die zijn opgenomen in WQL. Zie WHERE-componentvoor meer informatie over syntaxis. Zie WQL-operatorsvoor meer informatie over geldige WQL-operators.
Net als bij andere SQL-queryreeksen kunt u uw query's escapen.
Notitie
WQL biedt geen ondersteuning voor query's of koppelingen tussen naamruimten. U kunt geen query's uitvoeren voor alle exemplaren van een opgegeven klasse die zich in alle naamruimten op de doelcomputer bevindt.
WQL ondersteunt de volgende typen query's:
Gegevensqueries
Gegevensquery's worden gebruikt om klasse-exemplaren en gegevenskoppelingen op te halen. Dit zijn het meest gebruikte type query in WMI-scripts en -toepassingen. Zie Gegevens van een klasse-instantie opvragenvoor nadere informatie over de syntaxis van gegevensquery's. Zie "Het Declareren van een Relatieklasse"voor meer informatie over associaties.
Notitie
WQL biedt geen ondersteuning voor query's van matrixgegevenstypen.
In het volgende voorbeeld van een gegevensquery wordt het gebeurtenislogboekbestand met de naam 'Toepassing' aangevraagd vanuit alle exemplaren van Win32_NTLogEvent.
strComputer = "." Set objWMIService = GetObject("winmgmts:\\" _ & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_NTLogEvent " _ & "WHERE Logfile = 'Application'",,48)
Evenementvragen
Consumenten gebruiken gebeurtenisquery's om zich te registreren voor het ontvangen van meldingen van gebeurtenissen. Gebeurtenisproviders gebruiken gebeurtenisquery's om te registreren ter ondersteuning van een of meer gebeurtenissen. Zie Gebeurtenismeldingen ontvangenvoor meer informatie over vraagstellingen met betrekking tot gebeurtenissen.
De volgende voorbeeld van een gebeurtenisquery door een tijdelijke gebeurtenisconsumer vraagt een melding wanneer een nieuw exemplaar van een klasse die is afgeleid van Win32_NTLogEvent wordt gemaakt.
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
Schemaqueries
Schemaquery's worden gebruikt om klassedefinities (in plaats van klasse-exemplaren) en schemakoppelingen op te halen. Klasseproviders gebruiken schemaquery's om de klassen op te geven die ze ondersteunen wanneer ze zich registreren. Zie Klassedefinities ophalenvoor meer informatie over schemaquery's.
In het volgende voorbeeld van een schemaquery ziet u de speciale syntaxis.
SELECT * FROM meta_class WHERE __this ISA "Win32_BaseService"
Verwante onderwerpen