Поделиться через


Выполнение запросов с помощью WQL

Язык запросов WMI (WQL) — это подмножество стандартного языка структурированных запросов Американского национального института стандартов (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 формат даты и времени