Поделиться через


Метод 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
Заголовок
Wbemdisp.h
Библиотека типов
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemObjectSet
IID
IID_ISWbemObjectSet

См. также раздел

SWbemObjectSet