Pernyataan SELECT untuk Kueri Skema

Kueri data skema menggunakan pernyataan SELECT dengan sintaks yang mirip dengan kueri data. Perbedaannya adalah penggunaan kelas khusus yang disebut "meta_class", yang mengidentifikasi kueri sebagai kueri skema.

Contoh berikut meminta semua definisi kelas yang berada dalam namespace saat ini.

SELECT * FROM meta_class

Kueri skema hanya mendukung "*". Untuk mempersempit cakupan definisi yang dikembalikan, penyedia dapat menambahkan klausa WHERE yang menentukan kelas tertentu.

Contoh berikut menunjukkan cara menambahkan klausa WHERE untuk menentukan kelas tertentu.

SELECT * FROM meta_class WHERE __this ISA "Win32_LogicalDisk"

Properti khusus yang disebut __this mengidentifikasi kelas target untuk kueri skema. Perhatikan bahwa operator ISA harus digunakan dengan properti __this untuk meminta definisi untuk subkelas kelas target. Kueri sebelumnya mengembalikan definisi untuk kelas Win32_LogicalDisk dan definisi untuk semua subkelasnya.

Contoh berikut menunjukkan cara meminta definisi kelas untuk satu kelas dengan menggunakan properti sistem __Class .

SELECT * FROM meta_class WHERE __Class = "Win32_LogicalDisk"

Kueri ini setara dengan memanggil metode IWbemServices::GetObject atau metode IWbemServices::GetObjectAsync dengan parameter jalur objek diatur ke "Win32_LogicalDisk".

Sampel kode VBScript berikut mengambil semua kelas anak dari kelas WMI tingkat atas. Properti sistem __Dynasty WMI menyimpan nama kelas tingkat atas tempat kelas diturunkan, yang dapat Anda gunakan untuk mengambil semua kelas di namespace yang berasal dari kelas tingkat atas, termasuk kelas tersebut.

' 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 berikut mengambil kelas turunan langsung untuk kelas 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 berikut mengambil kelas tingkat atas. Untuk semua kelas tingkat atas di namespace layanan WMI, properti sistem __Superclass null. Oleh karena itu, dimungkinkan untuk mengambil kelas tingkat atas dengan mencari superclass 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")