我有一个简单的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循环的需要。