Condividi tramite


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