Método SWbemObjectSet.ItemIndex

O método ItemIndex retorna o SWbemObject associado ao índice especificado na coleção. O índice indica a posição do elemento dentro da coleção. A numeração da coleção começa em zero.

Sintaxe

objWbemObject = .ItemIndex( _
  ByVal lIndex _
)

Parâmetros

lIndex

Índice do item na coleção.

Retornar valor

Se tiver êxito, o objeto SWbemObject solicitado vai gerar um retorno.

Códigos do Erro

Após a conclusão do método Item, o objeto Err pode conter um dos códigos de erro abaixo.

wbemErrFailed – 2147749889 (0x80041001)

Erro não especificado.

wbemErrInvalidParameter – 2147749896 (0x80041008)

Foi especificado um parâmetro inválido. Esse erro será retornado se um número de índice negativo for fornecido.

wbemErrOutOfMemory – 2147749894 (0x80041006)

Não há memória suficiente para concluir a operação.

wbemErrNotFound – 2147749890 (0x80041002)

O item solicitado não foi encontrado.

Comentários

O método ItemIndex permite que os clientes do WMI criem scripts e aplicativos escritos em qualquer linguagem de maneira uniforme para manipular uma coleção como uma matriz. Esse método pode ser usado com coleções de SWbemObjectSet. Consultas, como SWbemServices.AssociatorsOf, SWbemServices.ReferencesTo, SWbemServices.InstancesOf ou SWbemServices.ExecQuery retornam coleções de SWbemObjectSet. O método ItemIndex não funciona com coleções que não contêm SWbemObjects, como SWbemMethodSet, SWbemNamedValueSet, SWbemPrivilegeSet, SWbemPropertySet e SWbemQualifierSet.

ItemIndex também pode ser usado para obter a única instância de uma classe singleton.

Exemplos

O exemplo de código VBScript a seguir consulta uma coleção de todas as instâncias de Win32_Process e exibe os nomes dos três primeiros processos.

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

Existe apenas uma instância de Win32_OperatingSystem para cada instalação do sistema operacional. A criação do caminho de GetObject para obter a única instância é algo estranho, então os scripts normalmente enumeram Win32_OperatingSystem mesmo que apenas uma instância esteja disponível. O exemplo de código VBScript a seguir mostra como usar o método ItemIndex para chegar a um Win32_OperatingSystem sem usar um loop 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

O exemplo de código VBScript a seguir obtém instâncias associadas 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

A saída do exemplo de código a seguir mostra instâncias associadas 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 Valor
Cliente mínimo com suporte
Windows Vista
Servidor mínimo com suporte
Windows Server 2008
Cabeçalho
Wbemdisp.h
Biblioteca de tipos
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemObjectSet
IID
IID_ISWbemObjectSet

Confira também

SWbemObjectSet