Dela via


Fråga med WQL

WMI Query Language (WQL) är en delmängd av Standard American National Standards Institute Structured Query Language (ANSI SQL) med mindre semantiska ändringar för att stödja WMI.

En fullständig lista över WQL-nyckelord som stöds finns i WQL (SQL för WMI). Användning av SQL-nyckelord för objekt- eller egenskapsnamn kan hindra en fråga från att parsas. Följande SQL-nyckelord är begränsade: NULL, TRUEoch FALSE.

Obs

Det finns gränser för antalet AND- och OR-nyckelord som kan användas i WQL-frågor. Ett stort antal WQL-nyckelord som används i en komplex fråga kan orsaka att WMI returnerar felkoden WBEM_E_QUOTA_VIOLATION som ett HRESULT- värde. Gränsen för WQL-nyckelord beror på hur komplex frågan är.

 

Frågeställningar kan använda satsen WHERE för att utöka och anpassa, även om det inte krävs. Satsen WHERE består av en egenskap eller ett nyckelord, en operator och en konstant. Alla WHERE-satser måste ange en av de fördefinierade operatorerna som ingår i WQL. Mer information om syntax finns i WHERE-satsen. Mer information om giltiga WQL-operatorer finns i WQL-operatorer.

Precis som med andra SQL-frågesträngar kan du undvika dina frågor.

Not

WQL stöder inte frågor eller associationer mellan namnområden. Du kan inte fråga efter alla instanser av en angiven klass som finns i alla namnområden på måldatorn.

 

WQL stöder följande typer av frågor:

  • Datafrågor

    Datafrågor används för att hämta klassinstanser och dataassociationer. De är den vanligaste typen av fråga i WMI-skript och program. Mer information om syntaxen för datafrågor finns i Begära klassinstansdata. Mer information om associationer finns i Deklarera en associationsklass.

    Not

    WQL stöder inte frågor om matrisdatatyper.

     

    Följande datafrågasexempel begär händelseloggfilen med namnet "Application" från alla instanser av Win32_NTLogEvent.

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

    Konsumenter använder händelsefrågor för att registrera sig för att få meddelanden om händelser. Händelseleverantörer använder händelsefrågor för att registrera sig för att stödja en eller flera händelser. Mer information om händelsefrågor finns i Ta emot händelsemeddelanden.

    Följande exempel på en händelsefråga av en tillfällig händelsekonsument begär meddelande när en ny instans av en klass som härrör från Win32_NTLogEvent skapas.

    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
    
  • Schemafrågor

    Schemafrågor används för att hämta klassdefinitioner (i stället för klassinstanser) och schemaassociationer. Klassprovidrar använder schemafrågor för att ange de klasser som de stöder när de registrerar sig. Mer information om schemafrågor finns i Hämta klassdefinitioner.

    Följande exempelschemafråga visar den särskilda syntaxen.

    SELECT * FROM meta_class WHERE __this ISA "Win32_BaseService"
    

WMI-datum- och tidsformat