Método SWbemObjectSet.ItemIndex
El método ItemIndex devuelve el SWbemObject asociado al índice especificado en la colección. El índice indica la posición del elemento dentro de la colección. La numeración de la colección comienza en cero.
Sintaxis
objWbemObject = .ItemIndex( _
ByVal lIndex _
)
Parámetros
-
lIndex
-
Índice del elemento de la colección.
Valor devuelto
Si es correcto, se devuelve el objeto SWbemObject solicitado.
Códigos de error
Tras la finalización del método Item, el objeto Err puede contener uno de los códigos de error siguientes.
-
wbemErrFailed - 2147749889 (0x80041001)
-
Error no especificado.
-
wbemErrInvalidParameter: 2147749896 (0x80041008)
-
Se especificó un parámetro no válido. Este error se devuelve si se proporciona un número de índice negativo.
-
wbemErrOutOfMemory - 2147749894 (0x80041006)
-
No hay suficiente memoria para completar la operación.
-
wbemErrNotFound: 2147749890 (0x80041002)
-
No se encontró el elemento solicitado.
Comentarios
El método ItemIndex permite a los scripts y aplicaciones de clientes WMI escritos en cualquier lenguaje una manera uniforme de manipular una colección, como una matriz. Este método se puede usar con colecciones SWbemObjectSet. Las consultas, como SWbemServices.AssociatorsOf, SWbemServices.ReferencesTo, SWbemServices.InstancesOf o SWbemServices.ExecQuery devuelven colecciones SWbemObjectSet. El método ItemIndex no funciona con colecciones que no contienen SWbemObjects, como SWbemMethodSet, SWbemNamedValueSet, SWbemPrivilegeSet, SWbemPropertySet y SWbemQualifierSet.
ItemIndex también se puede usar para obtener la única instancia de una clase singleton.
Ejemplos
En el siguiente ejemplo de código VBScript se consulta una colección de todas las instancias de Win32_Process y, posteriormente, se muestran los nombres de los tres primeros procesos.
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
Solo existe una instancia de Win32_OperatingSystem para cada instalación del sistema operativo. La creación de la ruta de acceso GetObject para obtener la instancia única es complicada, por lo que los scripts normalmente enumeran Win32_OperatingSystem aunque solo haya una instancia disponible. En el siguiente ejemplo de código de VBScript se muestra cómo usar el método ItemIndex para llegar a Win32_OperatingSystem sin usar un bucle de tipo For Each.
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
En el ejemplo de código de VBScript siguiente se obtienen instancias asociadas a Win32_OperatingSystem, como 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
En la salida del ejemplo de código siguiente se muestran las instancias asociadas a Win32_OperatingSystem.
Windows Server 2008
|C:\Windows|\Device\Harddisk0\Partition1
Win32_ComputerSystem.Name="Test1"
Win32_AutochkSetting.SettingID="Windows Server 2008
|C:\\Windows|\\Device\\Harddisk0\\Partition1"
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible |
Windows Vista |
Servidor mínimo compatible |
Windows Server 2008 |
Encabezado |
|
Biblioteca de tipos |
|
Archivo DLL |
|
CLSID |
CLSID_SWbemObjectSet |
IID |
IID_ISWbemObjectSet |