通过 WQL 查询

WMI 查询语言 (WQL) 是标准美国国家标准学会结构化查询语言 (ANSI SQL) 的一个子集,其中包含用于支持 WMI 的小语义更改。

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

备注

可在 WQL 查询中使用的、和或关键字的数量有限制。 复杂查询中使用大量的 WQL 关键字可能导致 WMI 以 HRESULT 值的形式返回 WBEM _ E _ 配额 _ 冲突 错误代码。 WQL 关键字的限制取决于查询的复杂程度。

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

对于其他 SQL 查询字符串,可以对查询进行转义。

备注

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

WQL 支持以下类型的查询:

  • 数据查询

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

    备注

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

    以下数据查询示例从 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 日期和时间格式