Compartir a través de


Windows PowerShell: Informes HTML de PowerShell

Puede usar cmdlets de Microsoft Windows PowerShell para generar informes HTML que pueda compartir con sus colegas.

Don Jones

Entre sus competencias muchos, Windows PowerShell tiene la capacidad integrada para dar como resultado HTML desde sus varios cmdlets. Simplemente canalizar la salida cmdlet ConvertTo-HTML y que los resultados de la tubería a Out-File introducirla en un archivo. Por ejemplo:

Get-WmiObject –Class Win32_Service | 
Select-Object –property Name,State |
Where-Object –Filter { $_.StartMode –eq 'Auto' –and $_.State –ne 'Running' } | 
ConvertTo-HTML | 
Out-File BadNews.html

Que proporcionará una lista de servicios que deben estar en funcionamiento, pero no están. Que es algo que podría escribir en un servidor de archivos de la intranet y tener su help desk comprobar cada mañana. Por cierto, al escribir todo eso, las primeras cuatro líneas deben finalizar con el carácter de canalización (|). La última línea termina con un retorno de carro.

Si de forma interactiva que escribe en el shell, verá el símbolo del sistema cambie a ">>" después de que termine de escribir la canalización de la primera línea y retorno de carro. Eso está bien. Significa que Windows PowerShell está esperando que escriba la siguiente línea. Después de escribir la línea de la cuarta y última, presione ENTRAR dos veces para saber el shell que ya está terminado y que desea que se ejecute el comando.

Un problema con el cmdlet ConvertTo-HTML, sin embargo, es la que ha diseñado sólo para tratar con un tipo de salida a la vez. Si se intenta llenarlo de numerosos tipos de objeto: servicios, procesos o entradas de registro de sucesos, no formatear correctamente el resultado.

Si desea crear un informe consolidado de algún tipo, el truco es usar los distintos parámetros del cmdlet. Por ejemplo, supongamos que desea generar un informe que incluye los mencionado anteriormente "servicios que deben estar en funcionamiento, pero no". También desea que la página para ver una lista de las 100 entradas de registro de sucesos de seguridad más recientes, todos los procesos que se está ejecutando el servidor y cierta información básica sobre el propio servidor.

Tiene que saber dos cosas: primero, el parámetro –Fragment de ConvertTo-HTML (que encontrará en su archivo de Ayuda) y el segundo, el hecho de que el cmdlet no escribe HTML en un archivo.

Como en mi primer ejemplo, el cmdlet coloca el código HTML en la canalización, que tarda un paso para entrar en un archivo independiente. Que parece complicado en el primer ejemplo, pero nos proporcionará la capacidad que tenemos que hacer esto:

$one = Get-WmiObject -class Win32_Service |
 Select-Object -property Name,State |
 Where-Object -filter { $_.Mode -eq 'Auto' -and $_.State -ne 'Running' } |
ConvertTo-HTML -Fragment 

$two = Get-EventLog -LogName Security -newest 100 |
ConvertTo-HTML -Fragment 

$three = Get-Process |
ConvertTo-HTML -Fragment 

$four = Get-WmiObject -class Win32_OperatingSystem |
 Select-Object -property Caption,BuildNumber,ServicePackMajorVersion,
 @{n='LastBootTime';e={$_.ConvertToDateTime($_.LastBootUpTime)}} |
ConvertTo-HTML -Fragment 

ConvertTo-HTML -Body "$one $two $three $four" -Title "Server Status" |
 Out-File c:\status.html

Al escribir en, terminar cada línea con un carácter de canalización, excepto la última línea que termina sólo con un retorno de carro. Esta opción ejecuta cuatro comandos distintos, cada uno de ellos está recuperando una parte de la información y convertirla en un fragmento de HTML.

Un fragmento de HTML es una cadena larga de HTML que no incluya las etiquetas de encabezado que hacen que una página completa. En el último paso, simplemente soy escuchar el código HTML en el cuerpo de una página completa y forzar su salida en un archivo.

Intente ejecutar y darnos su opinión. Es bastante sencillo. Es un chiste que Windows PowerShell es el único producto de Microsoft que muestra los resultados "limpio" de HTML, sin adición de cualquier estilo o el formato. La desventaja es que el código HTML "limpio" es bastante aburrido. Que es a propósito. Se supone que lo hace más atractivo mediante un archivo CSS independiente.

Dentro de HTML, principalmente aplicará formato a HTML <td> etiquetas. Éstos contienen las filas de tabla. El <th> las etiquetas contienen los encabezados de columna para la tabla. El <body> etiqueta puede proporcionar un formato predeterminado para toda la página. Crear un archivo de texto denominado C:\Style.css y escriba lo siguiente:

body {
font-family:Calibri;
 font-size:10pt;
}
th { 
background-color:black;
color:white;
}
td {
 background-color:#666;
color:black;
}
Now, I’ll simply modify my lastConvertTo-HTML command as follows:
ConvertTo-HTML -Body "$one $two $three $four" -Title "Server Status" -CssUri c:\style.css |
 Out-File c:\status.html

Que debe tener dos líneas de texto para escribir y, una vez más, la primera línea termina en el carácter de canalización. Intentar ejecutar todo lo que. Encontrará que más con un bonito el formato de salida. Por desgracia, CSS no proporciona una forma de aplicar estilo a las filas de tabla alternas, al menos no en la forma en que Windows PowerShell genera el código HTML de salida.

Puede utilizar los parámetros –PreContent y –PostContent de ConvertTo-HTML para agregar encabezados de sección y cualquier otro texto. Esto puede ayudar a que el informe más legible. Se mostrará cualquier cadena pasada a –PreContent antes de la tabla. Se mostrará el texto enviado a –PostContent después de la tabla. Puede encontrar ejemplos de éstos mediante la ejecución de la Ayuda de ConvertTo-HTML
–example en el shell.

Se trata de un buen ejemplo de cómo puede usar Windows PowerShell para producir informes útiles para compartir con sus compañeros. No tardará mucho trabajo adicional para crear la salida HTML de aspecto decente. Al guardar las páginas en un servidor de archivos de la intranet, hacerlos accesibles a compañeros de trabajo, administradores y cualquier otra persona que es posible que necesite.

Don Jones

Don Jones es un destinatario del premio MVP de Microsoft y el autor de "aprender Windows PowerShell en un mes de almuerzos" (Manning publicaciones Co., 2010), un libro que se ha diseñado para ayudar a cualquier administrador entrarán en vigencia con Windows PowerShell. Jones también ofrece formación pública y en el sitio de Windows PowerShell. Póngase en contacto con él a través de su sitio Web en ConcentratedTech.com.

Contenido relacionado