我有一个简单的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
是否可以获取第一条记录,或者我是否必须遍历集合中的所有记录。我见过的所有例子都是For Each
构造的。我尝试时收到预期声明结尾错误:
ver = colVersions[0].Version
看起来ExecQuery
的返回值不是正确的集合。
答案 0 :(得分:12)
在Windows Vista及更高版本中,您可以使用ItemIndex
方法按索引获取集合项:
ver = colVersions.ItemIndex(0).Version
在早期的Windows版本中,恐怕无法做到这一点。
答案 1 :(得分:12)
For Each objVer in colVersions
ver = objVer.Version
exit for
Next
答案 2 :(得分:-1)
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循环的需要。