Příkaz SELECT pro dotazy schématu
Datové dotazy schématu používají příkaz SELECT se syntaxí podobnou syntaxi pro datové dotazy. Rozdíl je použití speciální třídy s názvem "meta_class", která identifikuje dotaz jako dotaz schématu.
Následující příklad vyžaduje všechny definice tříd, které jsou v aktuálním oboru názvů.
SELECT * FROM meta_class
Dotazy schématu podporují pouze "*". Aby bylo možné zúžit rozsah vrácených definic, může zprostředkovatel přidat klauzuli WHERE, která určuje konkrétní třídu.
Následující příklad ukazuje, jak přidat klauzuli WHERE pro určení konkrétní třídy.
SELECT * FROM meta_class WHERE __this ISA "Win32_LogicalDisk"
Speciální vlastnost s názvem __this identifikuje cílovou třídu pro dotaz schématu. Všimněte si, že operátor ISA musí být použit s vlastností __this k vyžádání definic pro podtřídy cílové třídy. Předchozí dotaz vrátí definici pro třídu Win32_LogicalDisk a definice pro všechny její podtřídy.
Následující příklad ukazuje, jak vyžádat definici třídy pro jednu třídu pomocí __Class systémové vlastnosti.
SELECT * FROM meta_class WHERE __Class = "Win32_LogicalDisk"
Tento dotaz je ekvivalentní volání IWbemServices::GetObject nebo IWbemServices::GetObjectAsync metoda s parametrem cesty objektu nastaveným na "Win32_LogicalDisk".
Následující ukázka kódu VBScript načte všechny podřízené třídy třídy služby WMI nejvyšší úrovně. Vlastnost systému služby WMI __Dynasty obsahuje název třídy nejvyšší úrovně, ze které je třída odvozena, kterou můžete použít k načtení všech tříd v oboru názvů odvozeného z třídy nejvyšší úrovně, včetně této třídy.
' 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
Následující jazyk VBScript načte okamžité podřízené třídy pro třídu 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
Následující jazyk VBScript načte třídy nejvyšší úrovně. Pro všechny třídy nejvyšší úrovně v oboru názvů WMI, __Superclass systém vlastnost je Null. Proto je možné načíst třídy nejvyšší úrovně vyhledáním supertřídy 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")