Un computador Windows contiene miles de elementos de información de gestión. Los frameworks WMI (Windows Management Instrumentation) y CIM (Common Information Model) buscan facilitar y organizar dichos elementos.
La información en WMI está organizada por namespaces (espacios con nombre).
- El namespace
root\CIMv2contiene toda la información acerca del sistema operativo Windows y el hardware subyacente. - En computadores cliente, el namespace
root\SecurityCenter2(root\SecurityCenteren versiones anteriores del sistema operativo) contiene información acerca de software firewall, antivirus y antispyware instalados en el computador.
Dentro de cada namespace, WMI incluye una serie de clases. Cada clase
representa un tipo de componente de gestión que WMI sabe cómo consultar. Por
ejemplo, la clase Win32_LogicalDisk del namespace root\CIMv2 contiene
información acerca de discos lógicos, mientras que la clase AntiSpywareProduct
del namespace root\SecurityCenterv2 contiene información acerca de productos
antispyware.
Si existen componentes gestionables para una cierta clase, aparecerán como
instancias de dicha clase. Los nombres de las clases en el namespace
root\CIMv2 suelen iniciar con Win32_ (inclusive en máquinas de 64 bits)
o con CIM_ . Por lo general, las propiedades de dichas instancias son de sólo
lectura (es decir, no se pueden efectuar cambios a los valores de los
parámetros).
Existen diferentes herramientas diseñadas para explorar las distintas clases de WMI. Una de ellas es WMI Explorer, que se puede descargar desde: https://powershell.org/2013/03/wmi-explorer/
Esta herramienta es un script de Powershell. Para correrla, basta con cambiarse
al directorio donde se la descomprimió, y ejecutarla como .\wmiexplorer.ps1.
Si sale algún error indicando que no se tiene permiso para correr el script, se
puede cambiar la política de ejecución corriendo el siguiente comando como
administrador:
Set-ExecutionPolicy unrestrictedSe puede emplear el cmdlet Get-WmiObject para explorar los namespaces de WMI.
Por ejemplo, si se quisiera consultar las clases relacionadas con discos,
se puede emplear la siguiente orden:
Get-WmiObject -Namespace root\CIMv2 -list | where name -like '*disk*'La siguiente orden muestra una lista completa de las clases dentro del
namespace root\CIMv2:
Get-WmiObject -Namespace root\CIMv2 -listPara interrogar una clase específica, se emplea el parámetro -class:
Get-WmiObject -Namespace root\CIMv2 -class win32_desktopEl comando anterior se puede abreviar, debido a que el namespace por omisión
es root\CIMv2, y el parámetro -class es posicional:
Get-WmiObject win32_desktopEl comando Get-CimInstance se introdujo en Powershell versión 3, y funciona
de manera muy parecida a Get-WmiObject, excepto por lo siguiente:
- Se emplea el parámetro
-ClassNameen lugar de-Class. - No existe el parámetro
-listpara listar todas las clases de un namespace. Debe emplearse el cmdletGet-CimClasscon el parámetro-Namespace.
Ejemplos:
Listar las instancias de la clase Win32_LogicalDisk:
Get-CimInstance -ClassName win32_logicaldiskObtener la lista de clases de root\CIMv2, filtrando las que tienen que ver
con discos:
Get-CimClass -Namespace root\CIMv2 | where cimclassname -Like '*disk*'- ¿Cuál clase puede emplearse para consultar la dirección IP de un adaptador de red? ¿Posee dicha clase algún método para liberar un préstamo de dirección (lease) DHCP?
- Despliegue una lista de parches empleando WMI (Microsoft se refiere a los
parches con el nombre quick-fix engineering). Es diferente el listado al
que produce el cmdlet
Get-Hotfix? - Empleando WMI, muestre una lista de servicios, que incluya su status actual, su modalidad de inicio, y las cuentas que emplean para hacer login.
- Empleando cmdlets de CIM, liste todas las clases del namespace
SecurityCenter2, que tengan product como parte del nombre. - Empleando cmdlets de CIM, y los resultados del ejercicio anterior, muestre los nombres de las aplicaciones antispyware instaladas en el sistema. También puede consultar si hay productos antivirus instalados en el sistema.