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


Объект SWbemObjectSet

Объект SWbemObjectSet — это коллекция объектов SWbemObject . Дополнительные сведения см. в разделе Доступ к коллекции. Этот объект не может быть создан вызовом CreateObject VBScript.

Объект SWbemObjectSet можно получить, вызвав любой из следующих методов или их асинхронных эквивалентов:

Примечание

Объект SWbemObjectSet не поддерживает необязательные методы коллекции Add и Remove .

Примечание

Так как обратный вызов в приемник может быть возвращен не на том же уровне проверки подлинности, который требуется клиенту, рекомендуется использовать полусинхронный режим вместо асинхронного взаимодействия. Дополнительные сведения см. в разделе Вызов метода .

Элементы

Объект SWbemObjectSet имеет следующие типы элементов:

Методы

Объект SWbemObjectSet содержит следующие методы.

Метод Описание
Item Извлекает объект SWbemObject из коллекции. Это метод объекта по умолчанию.
ItemIndex Извлекает объект SWbemObject , связанный с указанным индексом, в коллекцию.

Свойства

Объект SWbemObjectSet имеет следующие свойства.

Свойство Тип доступа Описание
Рассчитывать
Только для чтения
Количество элементов в коллекции.
Безопасности_
Только для чтения
Используется для чтения или изменения параметров безопасности.

Комментарии

SWbemObjectSet — это коллекция из нулевых или более объектов SWbemObject. Каждый объект SWbemObject в SWbemObjectSet может представлять одну из двух вещей:

  • Экземпляр ресурса, управляемого WMI.
  • Экземпляр определения класса.

Чаще всего этот класс используется в WMI в качестве возвращаемого значения для вызова ExecQuery или InstancesOf , как описано в следующем примере кода:

strComputer = "."
Set objSWbemServices = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colServices = objSWbemServices.ExecQuery("SELECT State FROM Win32_Service")
For Each objService In colServices
    Wscript.Echo objService.Name, objService.State
Next

По большей части единственное, что вы когда-либо сделаете с SWbemObjectSet , это перечисление всех объектов, содержащихся в самой коллекции. Однако SWbemObjectSet содержит свойство Count, которое может быть полезно в скриптах администрирования системы. Как следует из названия, Count указывает количество элементов в коллекции. Например, этот скрипт извлекает коллекцию всех служб, установленных на компьютере, а затем отражает общее количество найденных служб:

Дополнительные сведения об использовании этого класса см. в разделе Перечисление WMI.

Примеры

В следующем примере кода VBScript показано, как обрабатываются коллекции SWbemObjectSet .

On Error Resume Next

Set Disks = GetObject("winmgmts:").InstancesOf ("CIM_LogicalDisk")

WScript.Echo "There are", Disks.Count, " Disks"

Set Disk = Disks("Win32_LogicalDisk.DeviceID=""C:""")
WScript.Echo Disk.Path_.Path

if Err <> 0 Then
 WScript.Echo Err.Description
 Err.Clear
End if

В следующем примере кода Perl показано, как обрабатываются коллекции SWbemObjectSet .

use strict;
use Win32::OLE;

my ($disks,$disk);

eval { $disks = Win32::OLE->GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2")->
   InstancesOf("CIM_LogicalDisk"); };
unless($@)
{
 print "\nThere are ", $disks->{Count}, " Disks \n";

 eval { $disk = $disks->Item("Win32_LogicalDisk.DeviceID=\"C:\""); };
 unless($@)
 {
  print $disk->{Path_}->{Path}, "\n";
 }
 else
 {
  print STDERR Win32::OLE->LastError, "\n";
 }
}
else
{
 print STDERR Win32::OLE->LastError, "\n";
}

Требования

Требование Значение
Минимальная версия клиента
Windows Vista
Минимальная версия сервера
Windows Server 2008
Заголовок
Wbemdisp.h
Библиотека типов
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemObjectSet
IID
IID_ISWbemObjectSet

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

Создание скриптов для объектов API