从WMI ExecQuery获取第一条记录

Luk*_*sky 8 windows vbscript wmi

我有一个简单的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
Run Code Online (Sandbox Code Playgroud)

有可能获得第一条记录,或者我必须遍历集合中的所有记录.我见过的所有例子都是For Each建筑.我尝试时收到预期的语句结束错误:

ver = colVersions[0].Version
Run Code Online (Sandbox Code Playgroud)

看起来返回值ExecQuery不是一个合适的集合.

Hel*_*len 12

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

ver = colVersions.ItemIndex(0).Version
Run Code Online (Sandbox Code Playgroud)

在早期的Windows版本中,恐怕无法做到这一点.

  • 小心 - 这在Windows XP中不起作用! (3认同)

小智 12

For Each objVer in colVersions
   ver = objVer.Version
   exit for
Next
Run Code Online (Sandbox Code Playgroud)