Dela via


SELECT-instruktion för schemafrågor

Schemadatafrågor använder SELECT-instruktionen med en syntax som liknar den för datafrågor. Skillnaden är användningen av en särskild klass med namnet "meta_class", som identifierar frågan som en schemafråga.

I följande exempel begärs alla klassdefinitioner som finns inom det aktuella namnområdet.

SELECT * FROM meta_class

Schemafrågor stöder endast "*". För att begränsa omfattningen för de definitioner som returneras kan en provider lägga till en WHERE-sats som anger en viss klass.

I följande exempel visas hur du lägger till en WHERE-sats för att ange en viss klass.

SELECT * FROM meta_class WHERE __this ISA "Win32_LogicalDisk"

Den särskilda egenskapen __this identifierar målklassen för en schemafråga. Observera att ISA-operatorn måste användas med egenskapen __this för att begära definitioner för underklasserna i målklassen. Föregående fråga returnerar definitionen för klassen Win32_LogicalDisk och definitioner för alla dess underklasser.

I följande exempel visas hur du begär en klassdefinition för en enskild klass med hjälp av __Class-systemegenskapen.

SELECT * FROM meta_class WHERE __Class = "Win32_LogicalDisk"

Den här frågan motsvarar anropet IWbemServices::GetObject eller IWbemServices::GetObjectAsync-metoden med parametern objektsökväg inställd på "Win32_LogicalDisk".

Följande VBScript-kodexempel hämtar alla underordnade klasser i en WMI-klass på toppnivå. Den __Dynasty WMI-systemegenskapen innehåller namnet på den toppnivåklass som en klass härleds från, som du kan använda för att hämta alla klasser i ett namnområde som härletts från en toppnivåklass, inklusive den klassen.

' 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

Följande VBScript hämtar en omedelbar underordnad klass för en WMI-klass.

' 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

Följande VBScript hämtar klasser på toppnivå. För alla klasser på den översta nivån i ett WMI-namnområde är __Superclass-systemegenskapen Null. Därför är det möjligt att hämta toppnivåklasserna genom att söka efter en Null-superklass.

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