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 |
|
Biblioteca de tipos |
|
DLL |
|
CLSID |
CLSID_SWbemObjectSet |
IID |
IID_ISWbemObjectSet |