Metodo SWbemObjectSet.ItemIndex

Il metodo ItemIndex restituisce l'oggetto SWbemObject associato all'indice specificato nella raccolta. L'indice indica la posizione dell'elemento all'interno dell'insieme. La numerazione della raccolta inizia da zero.

Sintassi

objWbemObject = .ItemIndex( _
  ByVal lIndex _
)

Parametri

Lindex

Indice dell'elemento nell'insieme.

Valore restituito

In caso di esito positivo, l'oggetto SWbemObject richiesto restituisce.

Codici di errore

Al termine del metodo Item , l'oggetto Err può contenere uno dei codici di errore riportati di seguito.

wbemErrFailed - 2147749889 (0x80041001)

Errore non specificato.

wbemErrInvalidParameter - 2147749896 (0x80041008)

È stato specificato un parametro non valido. Questo errore viene restituito se viene fornito un numero di indice negativo.

wbemErrOutOfMemory - 2147749894 (0x80041006)

Memoria insufficiente per completare l'operazione.

wbemErrNotFound - 2147749890 (0x80041002)

Impossibile trovare l'elemento richiesto.

Commenti

Il metodo ItemIndex consente ai client WMI script e applicazioni scritte in qualsiasi linguaggio un modo uniforme per modificare una raccolta come una matrice. Questo metodo può essere usato con gli insiemi SWbemObjectSet . Le query, ad esempio SWbemServices.AssociatorsOf, SWbemServices.ReferencesTo, SWbemServices.InstancesOf o SWbemServices.ExecQuery restituiscono raccolte SWbemObjectSet . Il metodo ItemIndex non funziona con le raccolte che non contengono SWbemObjects, ad esempio SWbemMethodSet, SWbemNamedValueSet, SWbemPrivilegeSet, SWbemPropertySet e SWbemQualifierSet.

ItemIndex può essere usato anche per ottenere la singola istanza di una classe singleton.

Esempio

Nell'esempio di codice VBScript seguente viene richiesta una raccolta di tutte le istanze di Win32_Process e quindi vengono visualizzati i nomi dei primi tre processi.

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

Esiste solo un'istanza di Win32_OperatingSystem per ogni installazione del sistema operativo. La creazione del percorso GetObject per ottenere l'istanza singola è imbarazzante in modo che gli script enumerino normalmente Win32_OperatingSystem anche se è disponibile una sola istanza. Nell'esempio di codice VBScript seguente viene illustrato come utilizzare il metodo ItemIndex per accedere a un Win32_OperatingSystem senza usare un ciclo 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

Nell'esempio di codice VBScript seguente vengono recuperate le istanze associate a Win32_OperatingSystem, ad esempio 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

L'output di esempio di codice seguente mostra le istanze associate 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"

Requisiti

Requisito Valore
Client minimo supportato
Windows Vista
Server minimo supportato
Windows Server 2008
Intestazione
Wbemdisp.h
Libreria dei tipi
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemObjectSet
IID
IID_ISWbemObjectSet

Vedi anche

SWbemObjectSet