WQL を使用したクエリ

WMI クエリ言語 (WQL) は、WMI をサポートするためのマイナー セマンティック変更を伴う標準のアメリカ国立標準研究所構造化照会言語 (ANSI SQL) のサブセットです。

サポートされている WQL キーワードの完全な一覧については、WQL (WMI のSQL) を参照してください。 オブジェクト名またはプロパティ名にSQLキーワードを使用すると、クエリの解析が制限される可能性があります。 次のSQLキーワードは、NULLTRUEおよび FALSE に制限されています。

Note

WQL クエリで使用できる AND キーワードと OR キーワードの数には制限があります。 複雑なクエリで使用される WQL キーワードの数が多い場合、WMI は WBEM_E_QUOTA_VIOLATION エラー コードを HRESULT 値として返す可能性があります。 WQL キーワードの制限は、クエリの複雑さによって異なります。

 

クエリでは、拡張機能とカスタマイズに WHERE 句を使用できますが、必須ではありません。 WHERE 句は、プロパティまたはキーワード、演算子、および定数で構成されます。 すべての WHERE 句では、WQL に含まれる定義済みの演算子のいずれかを指定する必要があります。 構文の詳細については、「 WHERE 句」を参照してください。 有効な WQL 演算子の詳細については、「 WQL 演算子」を参照してください。

他のSQLクエリ文字列と同様に、クエリをエスケープできます。

Note

WQL では、クロス名前空間クエリまたは関連付けがサポートされていません。 ターゲット コンピューター上のすべての名前空間に存在する、指定したクラスのすべてのインスタンスに対してクエリを実行することはできません。

 

WQL では、次の種類のクエリがサポートされています。

  • データ クエリ

    データ クエリは、クラス インスタンスとデータの関連付けを取得するために使用されます。 これらは、WMI スクリプトとアプリケーションで最もよく使用されるクエリの種類です。 データ クエリの構文の詳細については、「 クラス インスタンス データの要求」を参照してください。 関連付けの詳細については、「アソシエーション クラスの宣言」を参照してください。

    Note

    WQL では、配列データ型のクエリはサポートされていません。

     

    次のデータ クエリの例では、 Win32_NTLogEventのすべてのインスタンスから "Application" という名前のイベント ログ ファイルを要求します。

    strComputer = "." 
    Set objWMIService = GetObject("winmgmts:\\" _
        & strComputer & "\root\CIMV2") 
    Set colItems = objWMIService.ExecQuery( _
        "SELECT * FROM Win32_NTLogEvent " _
        & "WHERE Logfile = 'Application'",,48)
    
  • イベント クエリ

    コンシューマーは、イベント クエリを使用して登録し、イベントの通知を受信します。 イベント プロバイダーは、イベント クエリを使用して登録し、1 つ以上のイベントをサポートします。 イベント クエリの詳細については、「 イベント通知の受信」を参照してください。

    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 の日付と時刻の形式