Klausul WHERE (WMI)
Gunakan klausa WHERE untuk mempersempit cakupan data, peristiwa, atau kueri skema. Untuk informasi selengkapnya, lihat kueri 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 tentang, 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 jenis objek di WMI. Misalnya, kueri berikut valid jika Prop adalah properti MyClass yang valid dan jenis objek :
SELECT * FROM MyClass WHERE Prop.embedprop = 5
Pengujian 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 dan definisi myClassName 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 REFERENSI 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:
- Format TanggalWQL-Supported
- Format WaktuWQL-Supported