Obter o primeiro registo da execução do WMI

tenho um vbscript simples para obter a versão do Windows:

Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colVersions = objWMI.ExecQuery("Select * from Win32_OperatingSystem")

For Each objVer in colVersions
   ver = objVer.Version
Next

é possível obter o primeiro registo ou tenho de repetir todos os registos da colecção. Todos os exemplos que vi são com a construção. Eu recebo o fim esperado da declaração erro quando tento:

ver = colVersions[0].Version

parece que o valor de retorno de ExecQuery não é uma coleção adequada.

Author: gkrogers, 2010-03-04

3 answers

For Each objVer in colVersions
   ver = objVer.Version
   exit for
Next
 12
Author: Schietschijf, 2010-10-21 12:25:18

No Windows Vista e mais tarde, você pode usar o ItemIndex método para obter um item de colecção pelo seu índice:

ver = colVersions.ItemIndex(0).Version
Nas versões anteriores do Windows, receio que não haja forma de o fazer.
 11
Author: Helen, 2010-03-06 14:18:21
Set objWMI = GetObject("WinMgmts:{ImpersonationLevel=Impersonate}!\\.\Root\CIMV2")
Set objOS  = objWMI.ExecQuery("SELECT * FROM Win32_OperatingSystem").ItemIndex(0)

msgBox objOS.Version

Editar para explicação: Adicionando .ItemIndex (0) para a sua consulta original, você está pegando o primeiro item da coleção. Isto irá eliminar a necessidade de um para / cada laço.

 -1
Author: Mako-Wish, 2017-01-16 17:01:17