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 |
标头 |
|
类型库 |
|
DLL |
|
CLSID |
CLSID_SWbemObjectSet |
IID |
IID_ISWbemObjectSet |