Compartilhar via


Windows PowerShell: Relatórios em HTML do PowerShell

Você realmente pode usar os cmdlets do Microsoft Windows PowerShell para gerar relatórios HTML para compartilhar com seus colegas.

Don Jones

Entre seus muitos poderes, o Windows PowerShell tem a capacidade interna para produzir saída HTML a partir de seus diversos cmdlets. Simplesmente canalizar a saída do cmdlet ConvertTo-HTML e canalizar a saída para Out-File para obtê-lo em um arquivo. Por exemplo:

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 lhe fornecerá uma lista de serviços que devem estar funcionando, mas não são. Isso é algo que você pode gravar em um servidor de arquivos da intranet e fazer com que o seu suporte técnico Verifique todas as manhãs. A propósito, ao digitar tudo isso, as quatro primeiras linhas devem terminar com o caractere de pipe (|). A última linha termina com um retorno de carro.

Se interativamente digitar que no shell, você observará o prompt mude para ">>" depois que terminar de digitar a primeira linha pipe e retorno de carro. Não há problemas. Isso significa que o Windows PowerShell está aguardando para você digitar a próxima linha. Depois de digitar a quarta e última linha, pressione Enter duas vezes para informar o shell terminar e que você deseja executar o comando.

Um problema com o cmdlet ConvertTo-HTML, no entanto, é a que foi projetada apenas para lidar com um tipo de saída por vez. Se você tentar alimentação de vários tipos de objeto — serviços, processos ou entradas do log de eventos — ele não formatam adequadamente a saída.

Se você deseja criar um relatório consolidado de algum tipo, o truque é usar diferentes parâmetros do cmdlet. Por exemplo, digamos que você queira produzir um relatório que inclui os mencionado anteriormente "serviços que deveriam estar sendo executados, mas que não". Você também deseja que a página para listar os 100 entradas de log de eventos de segurança mais recentes, todos os processos que o servidor está executando e algumas informações básicas sobre o próprio servidor.

É preciso saber duas coisas: primeiro, o parâmetro –Fragment de ConvertTo-HTML (que você encontrará no seu arquivo de Ajuda) e o segundo, o fato de que o cmdlet não escreve HTML em um arquivo.

Meu primeiro exemplo, o cmdlet coloca o HTML no pipeline — que leva a uma etapa separada para obtê-lo em um arquivo. Que parece complicado no primeiro exemplo, mas nos dará a capacidade que precisamos fazer isso:

$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

Ao digitar que no, final cada linha com um caractere de pipe, exceto a última linha, apenas termina com um retorno de carro. Isso executa quatro comandos distintos, cada um deles está recuperando uma determinada parte das informações e convertê-la em um fragmento de HTML.

Um fragmento HTML é uma longa seqüência de HTML que não inclua as tags de cabeçalho que tornam uma página completa. Na última etapa, estou simplesmente emperrando o HTML no corpo de uma página completa e gerá-lo para um arquivo.

Tente executar o que e veja o que você pensa. É bastante simples. É uma piada que o Windows PowerShell é o único produto da Microsoft que produz "Limpar" HTML, sem adicionar qualquer estilo ou formatação. A desvantagem é que o HTML "limpa" é bastante entediante. Isso é proposital. Você precisa para torná-la mais atraente usando um arquivo separado do CSS.

Em HTML, você basicamente aplicará formatação em HTML <td> marcas. Eles contêm as linhas da tabela. <th> as marcas contêm os cabeçalhos de coluna da tabela. <body> marca pode fornecer um formato padrão para a página inteira. Crie um arquivo de texto chamado C:\Style.css e insira o seguinte:

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 deve tomar duas linhas de texto para digitar e mais uma vez, a primeira linha terminar no caractere de pipe. Tente executar tudo isso. Você encontrará que uma mais uma formatação de saída. Infelizmente, o CSS não fornece uma maneira de aplicar o estilo a linhas de tabela alternadas, pelo menos não da maneira que o Windows PowerShell produz o HTML de saída.

Você pode usar os parâmetros –PreContent e –PostContent do ConvertTo-HTML para adicionar títulos de seção e qualquer outro texto. Isso pode ajudar a tornar o relatório mais legível. Ele exibirá qualquer seqüência de caracteres passada para –PreContent antes da tabela. Texto enviado a –PostContent será exibido após a tabela. Você pode encontrar alguns exemplos dessas executando ConvertTo-HTML Help
–example no shell.

Este é um ótimo exemplo de como você pode usar o Windows PowerShell para produzir relatórios úteis para compartilhar com seus colegas. Ele não requer muito trabalho extra para criar a saída HTML decente atraentes. Salvando as páginas em um servidor de arquivos da intranet, você torná-los acessíveis aos colegas de trabalho, gerentes e qualquer pessoa que eles precisam.

Don Jones

Don Jones é um Microsoft MVP Award destinatário e o autor de "aprender Windows PowerShell em um mês de almoços" (Manning publicações co, 2010), um catálogo criado para ajudar a qualquer administrador que entram em vigor com o Windows PowerShell. Jones também oferece treinamento público e no local do Windows PowerShell. Entre em contato com ele por meio de seu site em ConcentratedTech.com.

Conteúdo relacionado