PowerShell: Crear reporte del sistema

Un excelente uso que podemos darle a nuestro querido lengueje de scripting es la de generar reportes. A todo el mundo le gustan los reportes!!! Ya sea con colores, información detallada, gráficas, etc. Existen muchos recursos para poder generar un reporte. Hoy, quiero compartir como armar un reporte del sistema (localhost :)), en donde se muestre el estado de uso del disco (o discos) locales, uso de memoria y CPU por medio de una gráfica con .NET (para los que no se acuerdan, este tema ya lo tramamos en un post anterior).

Este reporte va a tener como formato de salida el lenguaje standard de la web: HTML. Si bien podemos realizarlo en otros formatos, prefiero mostrar también el proceso de armado y las cosas a tener en cuenta.

Hecha la presentación, vamos a comenzar!

Vamos a crear una función que nos genere la gráfica del uso de la memoria, para ellos vamos a utilizar la forma de Doughnut:

Para que la gráfica anterior funcione correctamente, debemos de cargar los assemblies de .NET correspondientes. O sea que en primer lugar debemos de ingresar las siguientes líneas de códifo antes de que se empiece a declarar la función de la gráfica:

Teniendo los assemblies, podemos generar una gráfica en forma de línea en el tiempo para plasmar el uso del CPU sobre el paso del tiempo. El lapso de tiempo lo vamos a definir, más adelante en el post, en una variable al comienzo del script:

Continuando con las secciones importantes, pasamos a la extracción y recolección de los datos. Si bien voy a dejarles el bloque de código ya con la solución, megustaría que lo lean y lo entiendan (la mayoría de las cosas están comentadas)

Ahora bien, nos está faltando unir las partes y generar el HTML, para ello simplemente tenemos que pensar en el archivo HTML como si fuese texto, por lo que para definir una cadena de caracteres que contiene varias líneas lo debemos hacer de la siguiente manera:

Dejo a continuación el script entero, para que se pueda entender el concepto y como se resolvió la situación según lo anterior. Aproveché la situación y le di un poco de color y formato para que quede más lindo!!


Saludos,