Propiedad SWbemObjectSet.Count

Use la propiedad Count del objeto SWbemObjectSet para determinar cuántos elementos hay en una colección SWbemObjectSet. Esta propiedad es de solo lectura.

Para obtener una explicación de esta sintaxis, vea Convenciones de documentación para la API de scripting.

Esta propiedad es de solo lectura.

Sintaxis

SWbemObjectSet.Count As Integer

Valor de propiedad

Comentarios

Un aspecto que hay que tener en cuenta al usar Count es que WMI no lleva un recuento del número de elementos de una colección. Si solicita Count para una colección, WMI no puede responder al instante con un número, ya que debe contar literalmente los elementos y enumerar toda la colección. Si una colección tiene relativamente pocos elementos, como servicios, es probable que esta enumeración tarde menos de un segundo. En cambio, contar el número de eventos de una colección de registros de eventos puede tardar mucho más.

Supongamos que quiere mostrar los valores de propiedad de cada evento de la colección. En ese caso, WMI tendrá que enumerar toda la colección una segunda vez.

Nota

Si intenta obtener esta propiedad de un objeto SWbemObjectSet que se devuelve desde un método donde las marcas especificadas incluyen la marca wbemFlagForwardOnly, obtendrá un error wbemErrFailed.

Ejemplos

En general, lo único que hará con SWbemObjectSet es enumerar todos los objetos contenidos en la propia colección. La propiedad Count puede ser útil en el scripting de administración del sistema. Count indica el número de elementos de la colección. Por ejemplo, este script recupera una colección de todos los servicios instalados en un equipo y, luego, devuelve el número total de servicios encontrados:

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

Lo que hace que Count sea útil es que puede indicarle si una instancia específica está disponible en un equipo. Por ejemplo, este script recupera una colección de todos los servicios de un equipo que tienen el nombre W3SVC. Si Count es 0 (y si es válido que las colecciones no tengan instancias), significa que el servicio W3SVC no está instalado en el equipo.

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

Requisitos

Requisito Value
Cliente mínimo compatible
Windows Vista
Servidor mínimo compatible
Windows Server 2008
Encabezado
Wbemdisp.h
Biblioteca de tipos
Wbemdisp.tlb
Archivo DLL
Wbemdisp.dll
CLSID
CLSID_SWbemObjectSet
IID
IID_ISWbemObjectSet