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 |
|
Typbibliothek |
|
DLL |
|
CLSID |
CLSID_SWbemObjectSet |
IID |
IID_ISWbemObjectSet |