Usando objetos WMI

Al momento de aprovechar los beneficios de Powershell usando objectos WMI, estamos interactuando directamente con WMI namespaces y clases. Ahora bien, que es WMI:

Windows Management Instrumentation (WMI) es la fuente principal para administrar los datos y la funcionalidad en equipos locales y remotos que ejecutan los sistemas operativos Microsoft Windows.

Este fragmento de definic贸n extra铆do de la TechNet, nos deja ver que WMI es bastante importante y que es necesario tenerlo en cuenta a la hora de administrar nuestros sistemas. Se pueden obtener los datos de administraci贸n de WMI directamente a trav茅s de scripts y aplicaciones o a trav茅s de herramientas de administraci贸n, como pueden ser System Center Configuration Manager o System Center Operations Manager.

Como se comentaba en el p谩rrafo anterior, por medio de scripts es posible administrar nuestro sitema operativo y ac谩 les comparto algunos ejemplos de uso:

El primer Cmdlet que vamos a ver es Get-WmiObject que permite recolectar la informaci贸n necesaria dentro de un namespace y clase, previamente definido. Por defecto, Get-WmiObject usa el namespace root\cimv2, siendo 茅ste el sistema de nombres por defecto utilizado en Windows.

Entonces, vamos a obtener informaci贸n sobre nuestro equipo:

Get-WmiObject -Namespace root\cimv2 -Class win32_computersystem

Usando objectos WMI

Otro ejemplo es usar WMI para obtener informaci贸n sobre los procesos:

Get-WmiObject -Class Win32_Process

Existe otro Cmdlet similar llamado Get-CimInstance aunque su mayor diferencia es la posibilidad de trabajar remotamente usando una sesi贸n CIM. Ejecutando el Cmdlet con la clase que usamos en el primer ejempl, vamos a obtener los mismos datos, pero de la siguiente manera:

Get-CimInstance

Podemos obtener una lista con todas las clases ejecutando:

Get-WmiObject -list

O podemos filtrar en caso de necesitar algo m谩s espec铆fico, como podr铆a llegar a ser 鈥淒isk鈥, para obtener informaci贸n de los discos:

Get-WmiObject -list | where {$_.Name -like "*Disk*"}

Donde aparece la clase Win32_LogicalDisk, que podemos usarla para obtener el espacio de nuestro disco duro (en mi caso s贸lo C: ya que no tengo particiones):

Get-WMIObject -Class Win32_LogicalDisk | Where-Object {$_.DriveType -eq 3}

Win32_LogicalDisk

Existen muchas clases para investigar, lo mejor va a ser que busquen directamente para obtener la informaci贸n que necesiten.

Saludos,

Comments