Abfragen mit WQL

Die WQL (WMI Query Language) ist Teil der Standard-ANSI-SQL (American National Standards Institute Structured Query Language) mit geringfügigen Semantikänderungen zur Unterstützung von WMI.

Eine vollständige Liste unterstützter WQL-Schlüsselwörter finden Sie unter WQL (WMI SQL). Die Verwendung von SQL-Schlüsselwörtern für Objekt- oder Eigenschaftsnamen kann das Parsen einer Abfrage verhindern. Die folgenden SQL-Schlüsselwörter sind eingeschränkt: NULL, TRUE und FALSE.

Hinweis

Es gibt Grenzwerte für die Anzahl von AND- und OR-Schlüsselwörtern, die in WQL-Abfragen verwendet werden können. Eine große Anzahl an WQL-Schlüsselwörtern, die in einer komplexen Abfrage verwendet werden, kann dazu führen, dass WMI den Fehlercode WBEM_E_QUOTA_VIOLATION als HRESULT-Wert zurückgibt. Der Grenzwert für WQL-Schlüsselwörter hängt davon ab, wie komplex die Abfrage ist.

 

Abfragen können die WHERE-Klausel für Erweiterungen und Anpassungen verwenden, sie ist jedoch nicht erforderlich. Die WHERE-Klausel umfasst eine Eigenschaft oder ein Schlüsselwort, einen Operator und eine Konstante. Alle WHERE-Klauseln müssen einen der vordefinierten Operatoren angeben, die in WQL enthalten sind. Weitere Informationen zur Syntax finden Sie unter WHERE-Klausel. Weitere Informationen zu gültigen WQL-Operatoren finden Sie unter WQL-Operatoren.

Wie bei anderen SQL-Abfragezeichenfolgen können Sie Ihre Abfragen mit Escapezeichen versehen.

Hinweis

WQL unterstützt keine namespaceübergreifenden Abfragen oder Zuordnungen. Sie können nicht alle Instanzen einer angegebenen Klasse abfragen, die sich in allen Namespaces auf dem Zielcomputer befinden.

 

WQL unterstützt die folgenden Abfragetypen:

  • Datenabfragen

    Datenabfragen werden verwendet, um Klasseninstanzen und Datenzuordnungen abzurufen. Sie sind der am häufigsten verwendete Abfragetyp in WMI-Skripts und -Anwendungen. Weitere Informationen zur Syntax von Datenabfragen finden Sie unter Anfordern von Klasseninstanzdaten. Weitere Informationen zu Zuordnungen finden Sie unter Deklarieren einer Zuordnungsklasse.

    Hinweis

    WQL unterstützt keine Abfragen von Arraydatentypen.

     

    Im folgenden Datenabfragebeispiel wird die Ereignisprotokolldatei „Application“ von allen Instanzen von Win32_NTLogEvent angefordert.

    strComputer = "." 
    Set objWMIService = GetObject("winmgmts:\\" _
        & strComputer & "\root\CIMV2") 
    Set colItems = objWMIService.ExecQuery( _
        "SELECT * FROM Win32_NTLogEvent " _
        & "WHERE Logfile = 'Application'",,48)
    
  • Ereignisabfragen

    Consumer verwenden Ereignisabfragen, um sich für den Empfang von Benachrichtigungen über Ereignisse zu registrieren. Ereignisanbieter verwenden Ereignisabfragen, um sich für die Unterstützung von mindestens einem Ereignis zu registrieren. Weitere Informationen zu Ereignisabfragen finden Sie unter Empfangen von Ereignisbenachrichtigungen.

    Die folgende Beispielereignisabfrage durch einen temporären Ereignisconsumer fordert eine Benachrichtigung an, wenn eine neue Instanz einer von Win32_NTLogEvent abgeleiteten Klasse erstellt wird.

    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
    
  • Schemaabfragen

    Schemaabfragen werden verwendet, um Klassendefinitionen (anstelle von Klasseninstanzen) und Schemazuordnungen abzurufen. Klassenanbieter verwenden Schemaabfragen, um die Klassen anzugeben, die sie bei der Registrierung unterstützen. Weitere Informationen zu Schemaabfragen finden Sie unter Abrufen von Klassendefinitionen.

    Die folgende Beispielschemaabfrage zeigt die spezielle Syntax.

    SELECT * FROM meta_class WHERE __this ISA "Win32_BaseService"
    

Datums- und -Uhrzeitformat