Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zapytania dotyczące danych schematu używają instrukcji SELECT ze składnią podobną do tej w przypadku zapytań dotyczących danych . Różnica polega na użyciu specjalnej klasy o nazwie "meta_class", która identyfikuje zapytanie jako zapytanie schematu.
Poniższy przykład żąda wszystkich definicji klas znajdujących się w bieżącej przestrzeni nazw.
SELECT * FROM meta_class
Zapytania schematu obsługują tylko "*". Aby zawęzić zakres zwracanych definicji, dostawca może dodać klauzulę WHERE określającą określoną klasę.
W poniższym przykładzie pokazano, jak dodać klauzulę WHERE, aby określić określoną klasę.
SELECT * FROM meta_class WHERE __this ISA "Win32_LogicalDisk"
Właściwość specjalna o nazwie __this identyfikuje klasę docelową dla zapytania schematu. Należy pamiętać, że operator ISA musi być używany z właściwością __this, aby zażądać definicji dla podklas klasy docelowej. Powyższe zapytanie zwraca definicję dla klasy Win32_LogicalDisk i definicji dla wszystkich jej podklas.
W poniższym przykładzie pokazano, jak zażądać definicji klasy dla pojedynczej klasy przy użyciu właściwości systemu __Class.
SELECT * FROM meta_class WHERE __Class = "Win32_LogicalDisk"
To zapytanie jest równoważne wywołaniu metody IWbemServices::GetObject lub IWbemServices::GetObjectAsync z parametrem ścieżki obiektu ustawionym na "Win32_LogicalDisk".
Poniższy przykład kodu VBScript pobiera wszystkie klasy podrzędne klasy WMI najwyższego poziomu. Właściwość systemu __Dynasty WMI zawiera nazwę klasy najwyższego poziomu, z której pochodzi klasa, której można użyć do pobrania wszystkich klas w przestrzeni nazw pochodzącej z klasy najwyższego poziomu, w tym tej klasy.
' 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
Poniższy kod VBScript pobiera natychmiastowe klasy podrzędne dla klasy 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
Poniższy kod VBScript pobiera klasy najwyższego poziomu. We wszystkich klasach najwyższego poziomu w przestrzeni nazw usługi WMI właściwość systemu __Superclass ma wartość Null. W związku z tym można pobrać klasy najwyższego poziomu, wyszukując superklasę o wartości 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")