11 marzo 2015

Tarea WMI Data Reader

WMI es sinónimo de Windows Management Instrumentation y esta Tarea proporciona un fácil acceso a formatos de información de objetos de administración de los sistemas operativos basados en Windows. Por ejemplo: el número de unidades de disco, las estadísticas de uso de CPU, una lista de procesos en ejecución, y cualquier otra información pueden ser extraída con WMI. Utilizamos un lenguaje llamado WQL para extraer información de WMI, que es un lenguaje de consulta para WMI.
Así como WMI proporciona un amplio acceso a la información de gestión para nuestro sistema y el sistema operativo, SSIS proporciona dos tareas para WMI. En este ejercicio, echamos un vistazo a la tarea WMI Data Reader y leemos la información de los procesos en ejecución y la carga de sus datos en un archivo.

Alistarse

Crear un archivo de destino vacío en esta dirección: C:\SSIS\Control Flow\Archivos\RunningProcesses.txt.

Ejercicio

1.    Crear un Nuevo Proyecto SSIS y nómbrelo TareaWMIDataReader.
2.    Arrastre y suelte un WMI Data Reader Task de la sección Other Tasks de la Toolbox SSIS en el Control Flow.
3.    Haga doble clic en la tarea WMI Data Reader y vaya a la pestaña WMI Options.
4.    Haga clic en WMIConnection y crear una New WMI Connection…. En el WMI Connection Manager Editor, seleccione la opción Use Windows Authentication y, luego, en Test en la conexión para confirmarla.
5.    Haga clic en OK y retorne a la ficha WMI Options; escriba la siguiente sentencia en WmiQuerySource:
select * from Win32_Process
6.    Configurar OverwriteDestination como Overwrite destination.
7.    En la propiedad Destination crear un nuevo administrador de conexión Create file y apúntelo a un archivo existente en esta dirección: C:\SSIS\Control Flow\Archivos\ RunningProcesses.txt (creamos este archivo en la fase Alistarse de este ejercicio).
8.    Haga clic en OK, cierre el WMI Data Reader Task Editor, y ejecutar el paquete. Después de ejecutar el paquete comprobar el archivo RunningProcesses.txt, y verificar que la lista de todos los procesos en ejecución existan allí con valores separados por comas.
Funcionamiento
La tarea WMI Data Reader proporciona una manera de leer la información de objetos de gestión a través de sentencias WQL. En este ejercicio, leemos una lista de procesos de ejecución y su información relacionada.
Para trabajar con tareas WMI en SSIS necesitamos crear un administrador de conexión WMI. Un administrador de conexión WMI tiene dos propiedades importantes: Server name y Namespace Server name que significa el nombre del equipo del que WQL debe ejecutarse y el del cual debería leer los datos. Server name comienza con barras invertidas dobles (\\) y luego el nombre del equipo. El valor predeterminado de esta propiedad es \\localhost, el cual indica el sistema actual.
El Namespace debe ser el espacio de nombres para que la WMI Class bajo el cual las consultas se ejecutarán. Las WMI Classes son divididas en espacios de nombres; leyendo la información del disco duro podría usar \root\cimv2 namespace por ejemplo, pero para alguna información de IIS el espacio de nombres \root\WebAdministration sería más útil.
Una lista de WMI Classes y Namespaces está disponible en http://msdn.microsoft.com/enus/library/aa394554(v=VS.85).aspx.
Otra opción importante en WMI Connection Editor es la información Authentication. Así como la WMI está con privilegios administrativos necesita una cuenta administrativa para que se ejecute. Si proporcionamos una cuenta que no tiene los privilegios adecuados, obtendremos un error durante la ejecución de las tareas de WMI.
Después de configurar un WMI Connection Manager, es el momento de especificar la consulta WQL para WMI. WQL tiene una sintaxis sencilla para consultar WMI Classes. En este ejercicio utilizamos la siguiente consulta: Select * from Win32_Process.
Para entender mejor la sintaxis de WQL y para más información relacionada visite http://msdn.microsoft.com/en-us/library/aa394606(v=VS.85).aspx.
La WMI Query puede ser proporcionada de diferentes orígenes; WQL puede venir de un archivo en cuyo caso el WqlSourceQueryType debería ser File connection y una conexión al archivo debería ser creada en WqlSourceQuery. WQL también puede provenir de una variable o puede ser recuperada directamente. En este ejercicio configuramos WqlSourceQueryType como Direct input y proporcionamos una consulta directamente en WqlSourceQuery.
La salida de la WQL ejecutada puede estar en diferentes formatos; Data table, Property name and value, y Property value. En Data table la salida estará en la forma de una tabla de datos con cabeceras de columnas y filas de datos. En Property name and value todas las salidas consisten de nombres de propiedad y sus valores equivalentes; es lo mismo para la opción Property value, pero esta vez sin un nombre. En este ejercicio se utilizó Data table para la propiedad OutputType.
La salida de la WQL ejecutada puede ser añadida a un resultado existente, o puede ser sobrescrita sobre un resultado existente, o también puede optar por mantener un resultado existente y denegar nuevos resultados por sobrescribirlo. Estas opciones están disponibles en la propiedad OverwriteDestination.
DestinationType puede ser una variable de paquete o una conexión de archivo. En este ejercicio se utilizó una conexión de archivos y creamos un administrador de conexión de archivos a un archivo existente.
Uno de los escenarios más comunes con WMI Data Reader Task es la lectura de la información del sistema en el momento de la ejecución de un paquete para propósitos de registro y resolución de problemas.

Adicional

Tanto WMI Data Reader Task y WMI Event Watcher Task en Control Flow de SSIS son basados en WMI y tener herramientas para trabajar con WMI sería muy útil para probar y verificar los resultados de las consultas y encontrar WMI Classes apropiadas antes de implementarlas en SSIS. Presentamos luego una herramienta para WMI.

WMI code creator - una herramienta útil para WMI

Microsoft ofrece una aplicación sencilla y ligera para pruebas de WMI y generación de código. Esta herramienta ligera se puede descargar desde http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8572.
Después de instalar esta aplicación, puede elegir un namespace, una WMI Class y, luego, seleccionar las propiedades que desea extraer; el código WMI para C# y VB puede ser creado y los resultados pueden entonces ser vistos en una ventana de consola.
 
Usar esta herramienta para probar y encontrar los namespaces y las clases apropiadas WMI será útil.

1 comentarios:

Narcizo dijo...

Este post nos muestra la tarea WMI Data Reader, de SSIS. Espero les sea de utilidad.