Свойство 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 |
Заголовок |
|
Библиотека типов |
|
DLL |
|
CLSID |
CLSID_SWbemObjectSet |
IID |
IID_ISWbemObjectSet |