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 |
|
Biblioteca de tipos |
|
DLL |
|
CLSID |
CLSID_SWbemObjectSet |
IID |
IID_ISWbemObjectSet |