Klausa WHERE (WMI)

Gunakan klausa WHERE untuk mempersempit cakupan data, peristiwa, atau kueri skema. Untuk informasi selengkapnya, lihat Mengkueri dengan WQL. Klausa WHERE terdiri dari properti atau kata kunci, operator, dan konstanta. Semua klausa WHERE harus menentukan salah satu operator yang telah ditentukan sebelumnya yang disertakan dalam Windows Management Instrumentation (WMI) Query Language (WQL). Anda dapat menambahkan klausa WHERE ke pernyataan SELECT menggunakan salah satu formulir berikut:

SELECT * FROM class WHERE property operator constant
SELECT * FROM class WHERE constant operator property

di mana * adalah item yang dikueri, kelas adalah kelas untuk kueri, dan konstanta, operator, dan properti adalah konstanta, operator, dan properti atau kata kunci untuk digunakan. Untuk informasi selengkapnya tentang pernyataan SELECT, lihat Pernyataan SELECT untuk Kueri Data, Pernyataan SELECT untuk Kueri Peristiwa, atau Pernyataan SELECT untuk Kueri Skema.

Nilai konstanta harus dari jenis yang benar untuk properti . Selain itu, operator harus berada di antara daftar operator WQL yang valid. Nama properti atau konstanta harus muncul di salah satu sisi operator dalam klausa WHERE.

Anda dapat menggunakan literal string, seperti "NTFS", dalam klausa WHERE. Jika Anda ingin menyertakan karakter khusus berikut dalam string, Anda harus terlebih dahulu keluar dari karakter dengan mengawali karakter dengan garis miring terbalik (\):

  • garis miring terbelakang (\\)
  • tanda kutip ganda (\")
  • tanda kutip tunggal (\')

Ekspresi aritmatika arbitrer tidak dapat digunakan. Misalnya, kueri berikut hanya mengembalikan instans kelas Win32_LogicalDisk yang mewakili drive NTFS:

SELECT * FROM Win32_LogicalDisk WHERE FileSystem = "NTFS"

Nama properti tidak dapat muncul di kedua sisi operator. Kueri berikut adalah contoh kueri yang tidak valid:

SELECT * FROM PhysicalDisk WHERE Partitions < (4 + 7 - 2) 
    OR   (Partitions = SectorsPerTrack / 7)

Untuk sebagian besar penggunaan deskriptor kelas dalam klausa WHERE, WMI menandai kueri sebagai tidak valid dan mengembalikan kesalahan. Namun, gunakan operator titik (.) untuk properti objek jenis di WMI. Misalnya, kueri berikut valid jika Prop adalah properti MyClass yang valid dan merupakan objek jenis:

SELECT * FROM MyClass WHERE Prop.embedprop = 5

Tes perbandingan selalu tidak peka huruf besar/kecil. Artinya, tiga pernyataan berikut semuanya dievaluasi ke TRUE:

SELECT * FROM MyClass WHERE Prop1 = "cat"
SELECT * FROM MyClass WHERE Prop1 = "CAT"
SELECT * FROM MyClass WHERE Prop1 = "cAt"

Anda dapat membuat kueri yang menyertakan tipe data Boolean, tetapi satu-satunya jenis operand Boolean yang valid adalah tipe =, != dan <> . Nilai TRUE setara dengan angka 1, dan nilai FALSE setara dengan angka 0. Contoh berikut adalah kueri yang membandingkan nilai Boolean dengan nilai TRUE atau FALSE.

SELECT * FROM MyClass WHERE BoolProp = 1
SELECT * FROM MyClass WHERE BoolProp = TRUE
SELECT * FROM MyClass WHERE BoolProp <> FALSE
SELECT * FROM MyClass WHERE BoolProp = 0
SELECT * FROM MyClass WHERE BoolProp = FALSE
SELECT * FROM MyClass WHERE BoolProp != 1
SELECT * FROM MyClass WHERE BoolProp != FALSE
SELECT * FROM MyClass WHERE BoolProp <> FALSE

Contoh berikut adalah kueri yang tidak valid yang mencoba menggunakan operand yang tidak valid.

SELECT * FROM MyClass WHERE BoolProp <= TRUE
SELECT * FROM MyClass WHERE BoolProp >= 0
SELECT * FROM MyClass WHERE BoolProp > FALSE
SELECT * FROM win32_computersystem WHERE infraredsupported >= null

Beberapa grup properti, operator, dan konstanta dapat digabungkan dalam klausa WHERE menggunakan operator logis dan subekspresi kurung. Setiap grup harus digabungkan dengan operator AND, OR, atau NOT seperti yang ditunjukkan dalam kueri berikut. Kueri pertama mengambil semua instans kelas Win32_LogicalDisk dengan properti Nama diatur ke C atau D:

SELECT * FROM Win32_LogicalDisk WHERE Name = "C:" OR Name = "D:"

Kueri kedua mengambil disk bernama "C:" atau "D:" hanya jika mereka memiliki sejumlah ruang kosong yang tersisa dan memiliki sistem file NTFS:

SELECT * FROM Win32_LogicalDisk WHERE (Name = "C:" OR Name = "D:") 
    AND  FreeSpace > 2000000  AND   FileSystem = "NTFS"

Contoh ini memperlihatkan kueri skema menggunakan klausa WHERE.

SELECT * FROM meta_class WHERE __this ISA "myClassName"

Kelas meta_class mengidentifikasi ini sebagai kueri skema, properti yang disebut __this mengidentifikasi kelas target kueri dan operator ISA meminta definisi untuk subkelas kelas target. Oleh karena itu, kueri sebelumnya mengembalikan definisi untuk kelas myClassName dan definisi untuk semua subkelasnya.

Contoh berikut adalah kueri data menggunakan pernyataan ASSOCIATORS OF dengan WHERE:

ASSOCIATORS OF {myClass.keyVal="Value1"} WHERE ClassDefsOnly

Contoh berikutnya memperlihatkan kueri skema menggunakan ASSOCIATORS OF dan WHERE:

ASSOCIATORS OF {myClass} WHERE SchemaOnly

Contoh berikut adalah kueri data menggunakan pernyataan REFERENCES OF dan WHERE:

REFERENCES OF {myClass.keyVal="Value1"} 
    WHERE RequiredQualifier = myQual

Contoh terakhir ini adalah kueri skema menggunakan REFERENCES OF dan WHERE:

REFERENCES OF {myClass} WHERE SchemaOnly

Selain format DATETIME WMI, klausa WQL WHERE mendukung beberapa format tanggal dan waktu lainnya: