使用 WQL 进行查询

WMI 查询语言 (WQL) 是标准美国国家标准研究所结构化查询语言 (ANSI SQL) 的子集,其中包含支持 WMI 的轻微语义更改。

有关支持的 WQL 关键字的完整列表,请参阅 WMI) 的 WQL (SQL。 对对象或属性名称使用SQL关键字可能会限制查询进行分析。 以下SQL关键字受到限制:NULLTRUEFALSE

注意

WQL 查询中使用的 AND 和 OR 关键字数有限制。 复杂查询中使用的大量 WQL 关键字可能会导致 WMI 将 WBEM_E_QUOTA_VIOLATION 错误代码作为 HRESULT 值返回。 WQL 关键字的限制取决于查询的复杂程度。

 

查询可以使用 WHERE 子句进行扩展和自定义,尽管这不是必需的。 WHERE 子句由属性或关键字、运算符和常量组成。 所有 WHERE 子句都必须指定 WQL 中包含的预定义运算符之一。 有关语法的详细信息,请参阅 WHERE 子句。 有关有效 WQL 运算符的详细信息,请参阅 WQL 运算符

与其他SQL查询字符串一样,可以转义查询。

备注

WQL 不支持跨命名空间查询或关联。 不能查询驻留在目标计算机上的所有命名空间中的指定类的所有实例。

 

WQL 支持以下类型的查询:

  • 数据查询

    数据查询用于检索类实例和数据关联。 它们是 WMI 脚本和应用程序中最常用的查询类型。 有关数据查询语法的详细信息,请参阅 请求类实例数据。 有关关联的详细信息,请参阅 声明关联类

    备注

    WQL 不支持数组数据类型的查询。

     

    以下数据查询示例从 Win32_NTLogEvent的所有实例请求名为“Application”的事件日志文件。

    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 日期和时间格式