WHERE Yan Tümcesi (WMI)
Bir veri, olay veya şema sorgusunun kapsamını daraltmak için WHERE yan tümcesini kullanın. Daha fazla bilgi için bkz. WQL ile Sorgulama. WHERE yan tümcesi bir özellikten veya anahtar sözcükten, işleçten ve sabitten oluşur. Tüm WHERE yan tümceleri, Windows Yönetim Araçları (WMI) Sorgu Dili'ne (WQL) dahil edilen önceden tanımlanmış işleçlerden birini belirtmelidir. AŞAĞıDAKI formlardan birini kullanarak WHERE yan tümcesini SELECT deyimine ekleyebilirsiniz:
SELECT * FROM class WHERE property operator constant
SELECT * FROM class WHERE constant operator property
burada * sorgulanan öğedir; sınıf sorgulanması gereken sınıftır ve sabit, işleç ve özellik kullanılacak sabit, işleç ve özellik veya anahtar sözcüktür. SELECT deyimi hakkında daha fazla bilgi için bkz. Veri Sorguları için SELECT Deyimi, Olay Sorguları için SELECT Deyimiveya Şema Sorguları için SELECT Deyimi.
Sabitin değeri özelliği için doğru türde olmalıdır. Ayrıca işlecinin geçerliWQL işleçleri listesinde yer alması gerekir. WHERE yan tümcesindeki işlecin her iki tarafında bir özellik adı veya sabit görünmelidir.
WHERE yan tümcesinde "NTFS" gibi dize değişmez değerleri kullanabilirsiniz. Dizenize aşağıdaki özel karakterleri eklemek istiyorsanız, önce karakterin önüne ters eğik çizgi (\) ekleyerek karakterden kaçmalısınız:
- ters eğik çizgi (\\)
- çift tırnak işareti (\")
- tek tırnak (\')
Rastgele aritmetik ifadeler kullanılamaz. Örneğin, aşağıdaki sorgu yalnızca NTFS sürücülerini temsil eden Win32_LogicalDisk sınıfının örneklerini döndürür:
SELECT * FROM Win32_LogicalDisk WHERE FileSystem = "NTFS"
Özellik adları işlecin her iki tarafında da görüntülenemez. Aşağıdaki sorgu, geçersiz bir sorgu örneğidir:
SELECT * FROM PhysicalDisk WHERE Partitions < (4 + 7 - 2)
OR (Partitions = SectorsPerTrack / 7)
WHERE yan tümcesindeki sınıf tanımlayıcılarının çoğu kullanımları için WMI sorguyu geçersiz olarak işaretler ve bir hata döndürür. Ancak WMI'da nesne türündeki özellikler için nokta (.) işlecini kullanın. Örneğin, Prop MyClass'ın geçerli bir özelliğiyse ve nesnetüründeyse aşağıdaki sorgu geçerlidir:
SELECT * FROM MyClass WHERE Prop.embedprop = 5
Karşılaştırma testleri her zaman büyük/küçük harfe duyarlı değildir. Yani, aşağıdaki üç deyimin tümü TRUE olarak değerlendirilir:
SELECT * FROM MyClass WHERE Prop1 = "cat"
SELECT * FROM MyClass WHERE Prop1 = "CAT"
SELECT * FROM MyClass WHERE Prop1 = "cAt"
Boole veri türlerini içeren bir sorgu oluşturabilirsiniz, ancak yalnızca geçerli Boole işlenen türleri =, != ve <> türleridir. TRUE değeri 1 sayısıyla eşdeğerdir ve FALSE değeri 0 sayısına eşdeğerdir. Aşağıdaki örnekler, Boole değerini TRUE veya FALSE değerlerle karşılaştıran sorgulardır.
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
Aşağıdaki örnekler, geçersiz işlenenleri kullanmaya çalışan geçersiz sorgulardır.
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
Birden çok özellik, işleç ve sabit grubu, mantıksal işleçler ve parantez alt ifadeleri kullanılarak WHERE yan tümcesinde birleştirilebilir. Her grup, aşağıdaki sorgularda gösterildiği gibi ve, VEYA veya DEĞİl işleçleriyle birleştirilmelidir. İlk sorgu, Name özelliği C veya D olarak ayarlanmış Win32_LogicalDisk sınıfının tüm örneklerini alır:
SELECT * FROM Win32_LogicalDisk WHERE Name = "C:" OR Name = "D:"
İkinci sorgu yalnızca belirli miktarda boş alana sahip olmaları ve NTFS dosya sistemlerine sahip olmaları durumunda "C:" veya "D:" adlı diskleri alır:
SELECT * FROM Win32_LogicalDisk WHERE (Name = "C:" OR Name = "D:")
AND FreeSpace > 2000000 AND FileSystem = "NTFS"
Bu örnekte WHERE yan tümcesini kullanan bir şema sorgusu gösterilmektedir.
SELECT * FROM meta_class WHERE __this ISA "myClassName"
sınıf meta_class bunu bir şema sorgusu olarak tanımlar, __this adlı özellik sorgunun hedef sınıfını ve ISA işleci hedef sınıfın alt sınıfları için tanımları istemektedir. Bu nedenle, yukarıdaki sorgu myClassName sınıfının tanımını ve tüm alt sınıflarının tanımlarını döndürür.
Aşağıdaki örnek, WHERE ile ASSOCIATORS OF deyimi kullanan bir veri sorgusudur:
ASSOCIATORS OF {myClass.keyVal="Value1"} WHERE ClassDefsOnly
Sonraki örnekte ASSOCIATORS OF ve WHERE kullanan bir şema sorgusu gösterilmektedir:
ASSOCIATORS OF {myClass} WHERE SchemaOnly
Aşağıdaki örnek, REFERENCES OF deyimi ve WHERE kullanan bir veri sorgusudur:
REFERENCES OF {myClass.keyVal="Value1"}
WHERE RequiredQualifier = myQual
Bu son örnek, REFERENCES OF ve WHERE kullanan bir şema sorgusudur:
REFERENCES OF {myClass} WHERE SchemaOnly
WMI DATETIME biçimine ek olarak, WQL WHERE yan tümcesi diğer birkaç tarih ve saat biçimini destekler: