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
Wbemdisp.h
Biblioteca de tipos
Wbemdisp.tlb
Archivo DLL
Wbemdisp.dll
CLSID
CLSID_SWbemObjectSet
IID
IID_ISWbemObjectSet

Consulte también

SWbemObjectSet