Запросы с помощью WQL

Язык запросов WMI (WQL) — это подмножество стандартного американского национального института стандартов язык SQL (ANSI SQL) с незначительными семантические изменения для поддержки WMI.

Полный список поддерживаемых ключевых слов WQL см. в разделе WQL (SQL для WMI). Использование ключевых слов SQL для имен объектов или свойств может ограничить анализ запроса. Следующие ключевые слова SQL ограничены: NULL, TRUE и FALSE.

Примечание

Существуют ограничения на количество ключевых слов AND и OR, которые можно использовать в WQL-запросах. Большое количество ключевых слов WQL, используемых в сложном запросе, может привести к возврату WMI кода ошибки WBEM_E_QUOTA_VIOLATION в качестве значения HRESULT . Ограничение ключевых слов WQL зависит от сложности запроса.

 

Запросы могут использовать предложение WHERE для расширения и настройки, хотя это не обязательно. Предложение WHERE состоит из свойства или ключевое слово, оператора и константы. Все предложения WHERE должны указывать один из предопределенных операторов, включенных в WQL. Дополнительные сведения о синтаксисе см. в разделе Предложение WHERE. Дополнительные сведения о допустимых операторах WQL см. в разделе Операторы WQL.

Как и в случае с другими строками SQL-запросов, запросы можно экранировать.

Примечание

WQL не поддерживает запросы или связи между пространствами имен. Невозможно запросить все экземпляры указанного класса, размещенные во всех пространствах имен на целевом компьютере.

 

WQL поддерживает следующие типы запросов:

  • Запросы данных

    Запросы данных используются для получения экземпляров классов и сопоставлений данных. Они являются наиболее часто используемым типом запросов в скриптах и приложениях WMI. Дополнительные сведения о синтаксисе запросов данных см. в разделе Запрос данных экземпляра класса. Дополнительные сведения о связях см. в разделе Объявление класса ассоциаций.

    Примечание

    WQL не поддерживает запросы типов данных массива.

     

    Следующий пример запроса данных запрашивает файл журнала событий с именем "Application" из всех экземпляров Win32_NTLogEvent.

    strComputer = "." 
    Set objWMIService = GetObject("winmgmts:\\" _
        & strComputer & "\root\CIMV2") 
    Set colItems = objWMIService.ExecQuery( _
        "SELECT * FROM Win32_NTLogEvent " _
        & "WHERE Logfile = 'Application'",,48)
    
  • Запросы событий

    Потребители используют запросы событий для регистрации для получения уведомлений о событиях. Поставщики событий используют запросы событий для регистрации для поддержки одного или нескольких событий. Дополнительные сведения о запросах событий см. в разделе Получение уведомлений о событиях.

    В следующем примере запроса события временным потребителем события запрашивается уведомление при создании нового экземпляра класса, производного от Win32_NTLogEvent .

    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
    
  • Запросы схемы

    Запросы схемы используются для получения определений классов (а не экземпляров классов) и сопоставлений схем. Поставщики классов используют запросы схемы для указания классов, которые они поддерживают при регистрации. Дополнительные сведения о запросах схемы см. в разделе Получение определений классов.

    В следующем примере запроса схемы показан специальный синтаксис.

    SELECT * FROM meta_class WHERE __this ISA "Win32_BaseService"
    

Формат даты и времени WMI