windows - Obtenga el primer registro de WMI ExecQuery
vbscript (3)
Tengo un vbscript simple para recuperar la versión de 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
Es posible obtener el primer registro o tengo que recorrer todos los registros de la colección. Todos los ejemplos que he visto están con la construcción For Each
. Recibo el error de fin de declaración esperado cuando intento:
ver = colVersions[0].Version
Parece que el valor de retorno de ExecQuery
no es una recopilación adecuada.
En Windows Vista y versiones posteriores, puede usar el método ItemIndex
para obtener un elemento de colección por su índice:
ver = colVersions.ItemIndex(0).Version
En versiones anteriores de Windows, no hay forma de hacerlo, me temo.
For Each objVer in colVersions
ver = objVer.Version
exit for
Next
Set objWMI = GetObject("WinMgmts:{ImpersonationLevel=Impersonate}!//./Root/CIMV2")
Set objOS = objWMI.ExecQuery("SELECT * FROM Win32_OperatingSystem").ItemIndex(0)
msgBox objOS.Version
Editar para explicación: Al agregar .ItemIndex (0) a su consulta original, está tomando el primer elemento de la colección. Esto eliminará la necesidad de un ciclo For / Each.