Метод SWbemObjectSet.ItemIndex
Метод ItemIndex возвращает объект SWbemObject , связанный с указанным индексом, в коллекцию. Индекс указывает положение элемента в коллекции. Нумерацию коллекций начинается с нуля.
Синтаксис
objWbemObject = .ItemIndex( _
ByVal lIndex _
)
Параметры
-
Lindex
-
Индекс элемента в коллекции.
Возвращаемое значение
В случае успешного выполнения запрошенный объект SWbemObject возвращается.
Коды ошибок
После завершения метода Item объект Err может содержать один из приведенных ниже кодов ошибок.
-
wbemErrFailed — 2147749889 (0x80041001)
-
Незаданная ошибка.
-
wbemErrInvalidParameter — 2147749896 (0x80041008)
-
Указан недопустимый параметр. Эта ошибка возвращается, если указан отрицательный номер индекса.
-
wbemErrOutOfMemory — 2147749894 (0x80041006)
-
Недостаточно памяти для завершения операции.
-
wbemErrNotFound — 2147749890 (0x80041002)
-
Запрошенный элемент не найден.
Комментарии
Метод ItemIndex позволяет скриптам и приложениям WMI, написанным на любом языке, унифицированным способом управления коллекцией, например массивом. Этот метод можно использовать с коллекциями SWbemObjectSet . Запросы, такие как SWbemServices.AssociatorsOf, SWbemServices.ReferencesTo, SWbemServices.InstancesOf или SWbemServices.ExecQuery , возвращают коллекции SWbemObjectSet . Метод ItemIndex не работает с коллекциями, которые не содержат SWbemObjects, например SWbemMethodSet, SWbemNamedValueSet, SWbemPrivilegeSet, SWbemPropertySet и SWbemQualifierSet.
ItemIndex также можно использовать для получения одного экземпляра одноэлементного класса.
Примеры
Следующий пример кода VBScript запрашивает коллекцию всех экземпляров Win32_Process , а затем отображает имена первых трех процессов.
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
Для каждой установки операционной системы существует только один экземпляр Win32_OperatingSystem . Создание пути GetObject для получения одного экземпляра неловко, поэтому скрипты обычно перечисляют Win32_OperatingSystem даже если доступен только один экземпляр. В следующем примере кода VBScript показано, как использовать метод ItemIndex для получения одного Win32_OperatingSystem без использования цикла 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
В следующем примере кода VBScript возвращаются экземпляры, связанные с Win32_OperatingSystem, например 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
В следующем примере выходных данных кода показаны экземпляры, связанные с 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"
Требования
Требование | Значение |
---|---|
Минимальная версия клиента |
Windows Vista |
Минимальная версия сервера |
Windows Server 2008 |
Заголовок |
|
Библиотека типов |
|
DLL |
|
CLSID |
CLSID_SWbemObjectSet |
IID |
IID_ISWbemObjectSet |