SWbemObjectSet.ItemIndex-Methode

Die ItemIndex-Methode gibt das SWbemObject, das dem angegebenen Index zugeordnet ist, in die Sammlung zurück. Der Index gibt die Position des Elements innerhalb der Sammlung an. Die Nummerierung der Sammlung beginnt bei 0 (null).

Syntax

objWbemObject = .ItemIndex( _
  ByVal lIndex _
)

Parameter

lIndex

Der Index des Elements in der Sammlung.

Rückgabewert

Bei erfolgreicher Ausführung wird das angeforderte SWbemObject-Objekt zurückgegeben.

Fehlercodes

Nach Abschluss der Item-Methode kann das Err-Objekt einen der folgenden Fehlercodes enthalten.

wbemErrFailed – 2147749889 (0x80041001)

Unbekannter Fehler.

wbemErrInvalidParameter – 2147749896 (0x80041008)

Ein ungültiger Parameter wurde angegeben. Dieser Fehler wird zurückgegeben, wenn eine negative Indexnummer angegeben wird.

wbemErrOutOfMemory – 2147749894 (0x80041006)

Es ist nicht genügend Arbeitsspeicher zum Abschließen des Vorgangs vorhanden.

wbemErrNotFound – 2147749890 (0x80041002)

Das angeforderte Element wurde nicht gefunden.

Bemerkungen

Die ItemIndex-Methode bietet WMI-Clients, Skripts und Anwendungen, die in einer beliebigen Sprache geschrieben sind, eine einheitliche Möglichkeit zum Bearbeiten einer Sammlung wie ein Array. Diese Methode kann mit SWbemObjectSet-Sammlungen verwendet werden. Abfragen wie SWbemServices.AssociatorsOf, SWbemServices.ReferencesTo, SWbemServices.InstancesOf oder SWbemServices.ExecQuery geben SWbemObjectSet-Sammlungen zurück. Die ItemIndex-Methode funktioniert nicht mit Sammlungen, die keine SWbemObjects enthalten, z. B. SWbemMethodSet, SWbemNamedValueSet, SWbemPrivilegeSet, SWbemPropertySet und SWbemQualifierSet.

ItemIndex kann auch verwendet werden, um die einzelne Instanz einer Singleton-Klasse abzurufen.

Beispiele

Das folgende VBScript-Codebeispiel fragt eine Sammlung aller Win32_Process-Instanzen ab, und zeigt dann die Namen der ersten drei Prozesse an.

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & _
    strComputer & "\root\cimv2")

set colProcesses = _
    objWMIService.Execquery("Select * from Win32_Process")
Wscript.Echo  colProcesses.ItemIndex(0).Name
Wscript.Echo  colProcesses.ItemIndex(1).Name
Wscript.Echo  colProcesses.ItemIndex(2).Name

Für jede Betriebssysteminstallation ist nur eine Instanz von Win32_OperatingSystem vorhanden. Das Erstellen des GetObject-Pfads zum Abrufen der einzelnen Instanz ist umständlich, sodass Skripts normalerweise Win32_OperatingSystem auflisten, obwohl nur eine Instanz verfügbar ist. Im folgenden VBScript-Codebeispiel wird gezeigt, wie Sie mithilfe der ItemIndex-Methode zu der einen Win32_OperatingSystem-Instanz gelangen, ohne eine For Each-Schleife zu verwenden.

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colOperatingSystems = objWMIService.ExecQuery _
    ("Select * from Win32_OperatingSystem")

Wscript.Echo "Caption: " & colOperatingSystems.ItemIndex(0).Caption

Im folgenden VBScript-Codebeispiel werden Instanzen abgerufen, die Win32_OperatingSystem zugeordnet sind, z. B. Win32_SystemOperatingSystem.

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & _
    strComputer & "\root\cimv2")

set colOS = _
    objWMIService.Execquery("Select * from Win32_OperatingSystem")
    Wscript.Echo  colOS.ItemIndex(0).Name

set colAssociators = colOS.ItemIndex(0).Associators_
    For Each Associator in colAssociators 
        Wscript.Echo Associator.Path_.RelPath  
    Next

Die folgende Codebeispielausgabe zeigt Instanzen, die Win32_OperatingSystem zugeordnet sind.

Windows Server 2008 
    |C:\Windows|\Device\Harddisk0\Partition1
Win32_ComputerSystem.Name="Test1"
Win32_AutochkSetting.SettingID="Windows Server 2008 
    |C:\\Windows|\\Device\\Harddisk0\\Partition1"

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows Vista
Unterstützte Mindestversion (Server)
Windows Server 2008
Header
Wbemdisp.h
Typbibliothek
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemObjectSet
IID
IID_ISWbemObjectSet

Weitere Informationen

SWbemObjectSet