Share via


スキーマ クエリの SELECT ステートメント

スキーマ データ クエリでは、データ クエリと同様の構文で SELECT ステートメントを使用します。 違いは、クエリをスキーマ クエリとして識別する "meta_class" という特殊なクラスを使用することです。

次の例では、現在の名前空間内にあるすべてのクラス定義を要求します。

SELECT * FROM meta_class

スキーマ クエリでは "*" のみがサポートされます。 返される定義のスコープを絞り込むために、プロバイダーは、特定のクラスを指定する WHERE 句を追加できます。

次の例は、WHERE 句を追加して特定のクラスを指定する方法を示しています。

SELECT * FROM meta_class WHERE __this ISA "Win32_LogicalDisk"

__this という特殊なプロパティは、スキーマ クエリのターゲット クラスを識別します。 ターゲット クラスのサブクラスの定義を要求するには、ISA 演算子を __this プロパティと共に使用する必要があることに注意してください。 上記のクエリは、Win32_LogicalDisk クラスの定義とそのすべてのサブクラスの定義を返します。

次の例では、__Class システム プロパティを使用して、1 つのクラスのクラス定義を要求する方法を示します。

SELECT * FROM meta_class WHERE __Class = "Win32_LogicalDisk"

このクエリは、オブジェクト パス パラメーターを "Win32_LogicalDisk" に設定して IWbemServices::GetObject または IWbemServices::GetObjectAsync メソッドを呼び出すことと同じです。

次の VBScript コード サンプルでは、最上位レベルの WMI クラスのすべての子クラスを取得します。 __Dynasty WMI システム プロパティには、クラスの派生元となる最上位クラスの名前が保持されます。これを使用すると、そのクラスを含む、最上位クラスから派生した名前空間内のすべてのクラスを取得できます。

' Retrieve immediate child classes for Cim_DataFile

Set objWmi = GetObject ("winmgmts:root\cimv2")

Set colClasses = objWmi.ExecQuery _ 
    ("Select * From meta_class " _
    & "Where __Dynasty = 'Win32_CurrentTime'")

For Each objClass In colClasses 
    WScript.Echo objClass.SystemProperties_("__Class")
Next

次の VBScript は、WMI クラスの直接の子クラスを取得します。

' Retrieve immediate child classes for Cim_DataFile

Set objWmi = GetObject ("winmgmts:root\cimv2")

Set colClasses = objWmi.ExecQuery _ 
    ("Select * From meta_class " _
    & "Where __Superclass = 'Cim_DataFile'")

For Each objClass In colClasses 
    WScript.Echo objClass.SystemProperties_("__Class")
Next

次の VBScript は、最上位レベルのクラスを取得します。 WMI 名前空間内のすべての最上位クラスについて、__Superclass システム プロパティは Null です。 したがって、Null スーパークラスを検索することで、最上位クラスを取得できます。

 Retrieve top level classes in root\cimv2

Set objWmi = GetObject ("winmgmts:root\cimv2")

Set colClasses = objWmi.ExecQuery _
    ("Select * From meta_class Where __Superclass Is Null")

For Each objClass In colClasses
    WScript.Echo objClass.SystemProperties_("__Class")