Свойство SWbemObjectSet.Count

Используйте свойство Count объекта SWbemObjectSet , чтобы определить, сколько элементов находится в коллекции SWbemObjectSet . Это свойство доступно только для чтения.

Описание этого синтаксиса см. в разделе Соглашения о документах для API сценариев.

Это свойство доступно только для чтения.

Синтаксис

SWbemObjectSet.Count As Integer

Значение свойства

Комментарии

Одна вещь, которую следует соблюдать при использовании Count, заключается в том, что инструментарий WMI не выполняет подсчет количества элементов в коллекции. Если вы запрашиваете count для коллекции, WMI не может мгновенно ответить числом; Вместо этого он должен буквально подсчитывать элементы, перечисляя всю коллекцию. Для коллекции, которая содержит относительно мало элементов, таких как службы, это перечисление, скорее всего, занимает менее секунды. Однако подсчет количества событий в коллекции журналов событий может занять значительно больше времени.

А затем предположим, что вы хотите отобразить значения свойств для каждого события в коллекции. Если это так, WMI придется перечислить всю коллекцию во второй раз.

Примечание

При попытке получить это свойство из объекта SWbemObjectSet , возвращаемого методом, в котором указанные флаги включены в флаг wbemFlagForwardOnly, вы получите ошибку wbemErrFailed.

Примеры

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

strComputer = "."
Set objSWbemServices = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colSWbemObjectSet = objSWbemServices.InstancesOf("Win32_Service")
Wscript.Echo "Services installed on target computer: " & colSWbemObjectSet.Count

Функция Count полезна тем, что она может определить, доступен ли конкретный экземпляр на компьютере. Например, этот скрипт извлекает коллекцию всех служб на компьютере с именем W3SVC. Если значение count равно 0 (и допустимо для коллекций, чтобы не было экземпляров), это означает, что служба W3SVC не установлена на компьютере.

strComputer = "."
Set objSWbemServices = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colSWbemObjectSet = objSWbemServices.ExecQuery _
    ("SELECT * FROM Win32_Service WHERE Name='w3svc'")
If colSWbemObjectSet.Count = 0 Then
    Wscript.Echo "W3SVC service is not installed on target computer."
Else
    For Each objSWbemObject In colSWbemObjectSet
        ' Perform task on World Wide Web Publishing service.
    Next
End If

Требования

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