使用 WQL 進行查詢

WMI 查詢語言 (WQL) 是標準美國國家標準局結構化查詢語言 (SQL) (ANSI SQL) 子集,具有次要語意變更以支援 WMI。

如需支援的 WQL 關鍵字完整清單,請參閱 WQL (適用于 WMI 的 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 日期和時間格式