Sunday 24 July 2011

Utilidades WMI

Hola a todos,
Siguiendo la temática del post anterior, me gustaría profundizar un poco más en como podemos explotar WMI desde nuestras aplicaciones. Desde el área de sistemas siempre ha sido más habitual utilizar WMI que no desde el área de desarrollo, por ello podemos encontrar más herramientas enfocadas a sistemas para explotar sus posibilidades. Sin embargo, estas herramientas también pueden ser muy útiles para el programador, entre ellas me gustaría destacar WMI Code Creator, Script-o-matic, wmic y PowerShell.
 

WMI Code Creator

Como su propio nombre indica, esta herramienta permite generar código para acceder a WMI. Genera código tanto en VB.Net y C# como en VBScript. Su objetivo principal era ayudar a el personal de IT y desarrolladores a generar scripts para consultar WMI pero, además de esto, también nos permite ejecutar métodos de clases WMI, recibir eventos y navegar por todas las clases WMI que tengamos instaladas en nuestro ordenador. Aunque el código generado no sea muy complejo ni nos permita acceder a la información mediante propiedades fuertemente tipadas, como hace la utilidad mgmtclassgen que ya comenté en mi post anterior, es una utilidad muy práctica para explorar la información que podemos extraer de WMI y para generar código de ejemplo para realizar tareas básicas.
WMICodeCreator
Sin embargo, uno de los aspectos que más me atrae de esta utilidad es que está escrita en C#. No es una aplicación que tengamos que tomar como ejemplo a la hora de nuestros desarrollos, incluso diría que se podrían haber esforzado un poco en separar el acceso a la información de la interfaz gráfica. No obstante, leer el código ajeno es una de las mejores maneras de aprender, y, en un solo archivo cs descargable, podemos aprender un montón acerca de como está estructurado WMI y de como podemos acceder tanto a su esquema como a sus valores. Además, si utilizamos a menudo WMI o tenemos que generar scripts con asiduidad, siempre podemos modificar el código para que se adapte a nuestras necesidades.
WMI Code Creator puede descargarse del Microsoft Download Center aquí.
 

Scriptomatic 2.0

Esta utilidad es ampliamente conocida en el mundo del scripting. Es un archivo HTA (es decir HTML y VB Script), no genera código .Net sino VBScript, JScript, Perl y Python. Es bastante más limitada que WMI Code Creator desde el punto de vista del desarrollador pero aún así útil para enseñarnos los entresijos de escribir scripts para WMI. También está disponible en el Microsoft Download Center aquí.
 

WMIC

WMIC es sencillamente una utilidad de línea de comandos que nos permite acceder a WMI, es la utilidad más básica de las que he comentado pero es imprescindible conocerla si vas a trabajar extrayendo información del sistema por una u otra razón, ya que es la manera más sencilla de hacerlo y en algún momento tendrás la necesidad de corroborar de manera rápida los valores que retorna WMI. La desventaja es que hay que aprender a utilizarlo ya que, por una razón que escapa a mi conocimiento, utiliza alias para las clases y verbos para las acciones que son ligeramente distintos a los nombres de las clases WMI. Esta utilidad viene con el sistema operativo desde Windows XP, aquí os dejo el enlace que explica su sintaxis.
 

PowerShell Get-WmiObject

Para los que tengan la suerte de tener disponible PowerShell, existe el comando Get-WmiObject que nos da acceso a las clases de WMI desde la línea de comandos. Está claro que PowerShell es un gran avance para los administradores de sistemas pero como está basado en .Net también tiene una gran utilidad para los desarrolladores que sin apenas curva de aprendizaje podemos realizar scripts realmente complejos. Por ejemplo, con esta línea podemos recuperar todos los adaptadores de red
   1:  $NetworkAdapters = Get-WmiObject -Class Win32_NetworkAdapter 

y en la linea siguiente deshabilitar uno de ellos:

   2:  $NetworkAdapters[0].Disable() 

Aquí tenéis el enlace con la documentación de este método.

No comments: