WQL を使用したクエリ

WMI Query Language (WQL) は、標準的な米国規格協会の構造化照会言語 (ANSI SQL) のサブセットですが、WMI をサポートするためにセマンティックが少し変更されています。

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

注意

WQL クエリで使用できる AND キーワードと OR キーワードの数には制限があります。 複雑なクエリで使用される 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)
    
  • イベント クエリ

    コンシューマーはイベント クエリを使用して登録し、イベントの通知を受信します。 イベント プロバイダーは、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 の日付と時刻の形式