Propriedade SWbemObjectSet.Count

Use a propriedade Count do objeto SWbemObjectSet para determinar quantos itens estão em uma coleção SWbemObjectSet. Essa propriedade é somente leitura.

Para ver uma explicação dessa sintaxe, confira Convenções de documentação para a API de Script.

Esta propriedade é somente para leitura.

Sintaxe

SWbemObjectSet.Count As Integer

Valor da propriedade

Comentários

Tome cuidado ao usar o Count, pois o WMI não mantém uma contagem em execução do número de itens em uma coleção. Se você solicitar o Count para uma coleção, o WMI não poderá responder instantaneamente com um número. Em vez disso, ele deve literalmente contar os itens, enumerando toda a coleção. Para uma coleção que tem relativamente poucos itens, como serviços, essa enumeração provavelmente levará menos de um segundo. No entanto, contar o número de eventos em uma coleção de logs de eventos pode demorar consideravelmente mais.

E suponha que você queira exibir os valores de propriedade para cada evento na coleção. Nesse caso, o WMI terá que enumerar toda a coleção uma segunda vez.

Observação

Se você tentar obter essa propriedade de um objeto SWbemObjectSet retornado de um método em que os sinalizadores especificados estão incluídos no sinalizador wbemFlagForwardOnly, você receberá um erro wbemErrFailed.

Exemplos

Na maioria das vezes, a única coisa que você fará com um SWbemObjectSet é enumerar todos os objetos contidos na própria coleção. No entanto, o Count que pode ser útil no script de administração do sistema. Como o nome indica, Count informa o número de itens na coleção. Por exemplo, esse script recupera uma coleção de todos os serviços instalados em um computador e, em seguida, ecoa o número total de serviços encontrados:

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

O que torna o Count útil é que ele pode dizer se uma instância específica está disponível em um computador. Por exemplo, esse script recupera uma coleção de todos os serviços em um computador que têm o nome W3SVC. Se o Count for 0 (e for válido para que as coleções não tenham instâncias), isso significa que o serviço W3SVC não está instalado no computador.

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 Valor
Cliente mínimo com suporte
Windows Vista
Servidor mínimo com suporte
Windows Server 2008
Cabeçalho
Wbemdisp.h
Biblioteca de tipos
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemObjectSet
IID
IID_ISWbemObjectSet