WMI Query Language (WQL)
Eintrag zuletzt aktualisiert am: 05.10.2004
Die
WMI Query Language (WQL) ist eine
SQL-Variante für die Abfragen in Windows Management Instrumentarium (
WMI).
Ausführlicher TextWMI erlaubt es, Suchanfragen in einer Syntax zu stellen, die auf der ANSI Standard Structured Query Language (SQL) basiert. Der SQL-Dialekt heißt WMI Query Language, kurz: WQL. Es wird allerdings nur Lesezugriff mit dem SQL-Befehl SELECT unterstützt. Weder DDL (Data Definition Language) noch DML (Data Manipulation Language) werden unterstützt.
Das WQL-SELECT unterstützt neben den Standardschlüsselwörtern FROM, WHERE, GROUP BY, HAVING und WITHIN auch die nicht in ADSI-SQL definierten Schlüsselwörter ASSOCIATORS OF und REFERENCES OF.
OperatorenUnterstützte Operatoren sind =, <, >, <=, >=, != (alternativ: <>) sowie IS NULL, IS NOT NULL und ISA. Der ISA-Operator ermöglicht die Abfrage nach Unterklassen einer bestimmten Klasse. Wenn Dorf eine Unterklasse von Stadt ist, dann erfüllt ein Objekt GallischesDorf die Bedingung ISA Stadt.
TypenWMI unterstützt drei Typen von WQL-Anfragen:- Anfragen nach Instanzen (Data Queries)
- Anfragen nach Schemainformationen (Schema Queries)
- Definitionen von Eventfiltern (Event Queries), die nach Änderungen von Klassen und Instanzen fragen
BeispieleBeispiele für Abfragen mit WQL sind:
SELECT * FROM Win32_Service where state='running' and startmode='ma nual'
SELECT * FROM _InstanceModificationEvent within 5 where Target Instance isa "Win32Service" AND TargetInstance.State="Stopped"
Alle NT-Dienste, die laufen, aber manuell gestartet wurden
SELECT * FROM Win32_Service
WHERE
state='running' and startmode='manual'
Name und CATID aller COM-Komponentenkategorien
SELECT Name, CategoryId
FROM Win32_ComponentCategory
Das mehrwertige Attribut IPAddress einer Netzwerkkarte, die für das IP-Protokoll zugelassen ist
SELECT IPAddress
FROM Win32_NetworkAdapterConfiguration
WHERE IPEnabled=TRUE
Eintragsnummer und Nachricht aller Einträge in das Application-Ereignisprotokoll
SELECT RecordNumber, Message
FROM Win32_NTLogEvent
WHERE Logfile='Application'