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 |
|
Libreria dei tipi |
|
DLL |
|
CLSID |
CLSID_SWbemObjectSet |
IID |
IID_ISWbemObjectSet |