Получить первую запись из WMI ExecQuery
у меня есть простой vbscript для получения версии Windows:
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!.rootcimv2")
Set colVersions = objWMI.ExecQuery("Select * from Win32_OperatingSystem")
For Each objVer in colVersions
ver = objVer.Version
Next
можно получить первую запись или мне нужно зациклить все записи в коллекции. Все примеры, которые я видел, с For Each
строительство. Я получаю ожидаемый конец заявления ошибка при попытке:
ver = colVersions[0].Version
похоже на возвращаемое значение ExecQuery
- это не правильный сбор.
3 ответов
в 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.