Получить первую запись из WMI ExecQuery

У меня есть простой 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 не является правильной коллекцией.


person Lukas Cenovsky    schedule 04.03.2010    source источник
comment
Я пробовал различные способы получить первое значение в течение некоторого времени, но не мог. Это ни в коем случае не ответ :)   -  person Fionnuala    schedule 04.03.2010


Ответы (2)


В Windows Vista и более поздних версиях для получения элемент коллекции по его индексу:

ver = colVersions.ItemIndex(0).Version

Боюсь, в более ранних версиях Windows это сделать невозможно.

person Helen    schedule 04.03.2010
comment
Это именно то, что я искал. Спасибо. - person Lukas Cenovsky; 04.03.2010
comment
@Lukas: Действительно, MSDN говорит, что ItemIndex был представлен в Windows Vista. Обновил ответ. - person Helen; 06.03.2010

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.

person Mako-Wish    schedule 13.01.2017
comment
Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, почему и/или как этот код отвечает на вопрос, повышает его ценность в долгосрочной перспективе. - person Donald Duck; 13.01.2017
comment
Это просто повторяет ответ Хелен (без предостережения о версии). - person Ekkehard.Horner; 16.01.2017
comment
В конечном итоге тот же результат, но чище IMO. - person Mako-Wish; 17.01.2017