从WMI ExecQuery获取第一条logging

我有一个简单的VBScript检索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 

是可以得到第一个logging,或者我必须循环集合中的所有logging。 我见过的所有例子都是For Each构造。 我收到预期的语句错误结束时,我尝试:

 ver = colVersions[0].Version 

它看起来像ExecQuery的返回值不是一个适当的集合。

 For Each objVer in colVersions ver = objVer.Version exit for Next 

在Windows Vista和更高版本中,可以使用ItemIndex方法通过其索引获取集合项目:

 ver = colVersions.ItemIndex(0).Version 

在早期的Windows版本中,恐怕没有办法做到这一点。

 Set objWMI = GetObject("WinMgmts:{ImpersonationLevel=Impersonate}!\\.\Root\CIMV2") Set objOS = objWMI.ExecQuery("SELECT * FROM Win32_OperatingSystem").ItemIndex(0) msgBox objOS.Version 

编辑说明:通过将.ItemIndex(0)添加到您的原始查询,您抓住集合中的第一个项目。 这将消除For / Each循环的需要。