Sdílet prostřednictvím


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")