SWbemObjectSet.Count 属性

使用 SWbemObjectSet 对象的 Count 属性确定 SWbemObjectSet 集合中的项数。 此属性为只读。

有关此语法的说明,请参阅脚本 API 的文档约定

此属性为只读。

语法

SWbemObjectSet.Count As Integer

属性值

备注

使用 Count 时需要注意的一点是,WMI 不会保留集合中项数的运行计数。 如果你请求集合的 Count,WMI 无法立即用数字做出响应;相反,它必须通过枚举整个集合,从字面上统计项数。 对于项数相对较少的集合(例如服务),这种枚举可能在不到 1 秒内即可完成。 但是,统计事件日志集合中的事件数可能需要更长时间。

然后假设你想要显示集合中每个事件的属性值。 如果是这样,WMI 必须再次枚举整个集合。

注意

如果你尝试从 SWbemObjectSet 对象获取此属性,而该对象是从 wbemFlagForwardOnly 标志包含指定标志的方法返回的,则你将收到 wbemErrFailed 错误。

示例

在大多数情况下,对于 SWbemObjectSet,唯一要做的就是枚举集合本身中包含的所有对象。 但是,Count Count 在系统管理脚本中很有用。 顾名思义,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