O PowerShell é uma ferramenta poderosa que ajuda a simplificar e automatizar tarefas tediosas e repetitivas. Normalmente, os administradores usam o PowerShell para extrair informações de um sistema ou banco de dados quando o conjunto de dados necessário precisa ser apresentado como um relatório. Mas relatórios em arquivos de texto ou CSV geralmente não têm o estilo e a aparência sofisticada do HTML. Neste tutorial, você aprenderá como criar um relatório HTML com o PowerShell.
O PowerShell pode ajudar você a criar relatórios HTML e se afastar desses outros formatos sem graça. Usando apenas o PowerShell, você pode fazer um relatório ganhar vida com HTML, permitindo que você faça uma apresentação significativa dos dados brutos extraídos do sistema. Você pode até aplicar Cascading Style Sheets (CSS) para personalizar facilmente o layout do seu relatório.
Neste artigo, você aprenderá como usar o cmdlet ConvertTo-HTML
combinado com o Out-file
para gerar um relatório HTML. Você também aprenderá o básico do scripting do CSS e como ele pode ser útil na formatação do design do seu relatório baseado em HTML.
Pré-requisitos
Este artigo será um passo a passo. Se você pretende acompanhar, certifique-se de ter os seguintes pré-requisitos configurados antecipadamente.
- Todos os exemplos serão mostrados usando o Windows 10 Build 1709, mas essa versão não é obrigatória
- Windows PowerShell 5.1 ou versão posterior ou PowerShell Core 7
- Navegador como Internet Explorer ou Google Chrome
Criando um Relatório Básico de Informações do Computador usando ConvertTo-Html
Para demonstrar como usar o cmdlet ConvertTo-Html
e seus parâmetros, você irá criar um script que obtém informações básicas de uma máquina (como Sistema Operacional, Processador, BIOS e espaço em disco disponível) e gera essas informações em um relatório HTML.
Você começa com um comando que coleta informações sobre a versão do sistema operacional de uma máquina. Abra o seu console do PowerShell, copie e cole o comando abaixo e pressione enter para executá-lo.
Ao executar o comando acima, o cmdlet Get-CimInstance
coleta as propriedades da classe Win32_OperatingSystem
, que contém as informações sobre o sistema operacional da máquina. O comando retornará muitos resultados, portanto, é necessário filtrar para obter apenas as informações relevantes. O resultado deve ser semelhante à captura de tela mostrada abaixo.

Agora que você obteve o comando para retornar as informações do sistema operacional, vamos converter o resultado em código HTML. Para converter o resultado (objetos) do comando acima em código HTML, você pode encadear a saída do cmdlet Get-CimInstance
com o ConvertTo-Html
. Execute o comando abaixo no seu console do PowerShell.
Você pode ver na captura de tela a seguir que o PowerShell gera automaticamente as tags HTML a partir da saída do cmdlet Get-CimInstance
. O resultado é exibido em formato de tabela, onde o cabeçalho da tabela mostra os nomes das propriedades como Versão, Legenda, Número de compilação e Fabricante. Cada linha da tabela representa um objeto e exibe os valores do objeto para cada propriedade.

Exportando o Relatório para um Arquivo HTML
Agora que você obteve o resultado e o converteu para código HTML, vamos exportar o relatório para um arquivo HTML usando o cmdlet Out-file
e visualizar o relatório em um navegador da web. Encaminhe a saída do cmdlet ConvertTo-Html
e especifique o caminho onde deseja salvar o relatório usando o parâmetro -FilePath
e use Relatório-Informações-Básicas-do-Computador.html como o nome do arquivo.
Abra seu PowerShell ISE ou qualquer editor de texto, copie o código abaixo e salve o script com o nome de arquivo Gerar-Relatorio-HTML.Ps1
Execute o script Gerar-Relatorio-HTML.Ps1 no seu Console do PowerShell
Após executar o script, abra o arquivo Relatório-Informações-Básicas-do-Computador.html em um navegador da web. O navegador interpreta o código do relatório HTML e exibe os dados na tela do navegador. O relatório deve conter informações sobre o sistema operacional da máquina semelhantes à captura de tela abaixo.

Combinação de Relatórios Usando o Parâmetro Fragmento
Neste momento, você agora possui um script que obtém informações do sistema operacional da máquina e exporta o resultado para o relatório HTML. Seu objetivo é adicionar mais comandos no script para obter as informações restantes do computador, como Processador, BIOS, Disco e Serviços.
Cada comando irá retornar informações diferentes do computador formatadas como código HTML. Para consolidar corretamente as informações em um único relatório HTML, use o parâmetro Fragment
para obter apenas a parte da tabela do código HTML gerado pelo cmdlet ConvertTo-Html
.
Como você pode ver na captura de tela abaixo, o PowerShell gera todos os elementos básicos do HTML quando a saída é redirecionada para o cmdlet ConvertTo-Html
.

ConvertTo-Html
cmdletQuando você usa o parâmetro Fragment
, o PowerShell gera apenas o elemento de tabela do HTML. Os elementos <HTML>
, <HEAD>
, <TITLE>
, <BODY>
e outros são omitidos. O resultado é mostrado abaixo.

Agora que você já sabe como o parâmetro Fragment
funciona a partir do exemplo acima, vamos aplicar isso no script.
Os comandos no script abaixo realizam as seguintes ações:
- As primeiras cinco linhas de comandos obtêm diferentes informações da máquina, como Sistema Operacional, Processador, BIOS, Disco e Serviços.
- Filtram o resultado usando o parâmetro
-Property
para exibir apenas os valores relevantes - Armazenam os valores em variáveis respectivas. Cada informação é formatada como tabela usando
-Fragment
- Consolide as tabelas HTML usando o parâmetro
-Body
em um único relatório HTML - Defina o título do relatório como “Relatório de Informações do Computador” usando o parâmetro
-Title
- Exporte o relatório como um arquivo HTML usando o parâmetro
Out-file
Informações adicionais sobre o script estão disponíveis nos comentários no trecho de código abaixo. Atualize o script com o código seguinte.
Execute o script no console do PowerShell. Você pode ver a saída do relatório conforme mostrado abaixo.

Adicionando Rótulo Usando o Parâmetro PreContent
e PostContent
Neste ponto, o script agora pode obter todas as informações básicas de um computador e exportar o resultado para HTML. No entanto, como você pode ver na captura de tela acima, alguém ou um destinatário do relatório pode ter dificuldade em entender o conteúdo quando você remove a anotação, já que as informações não estão devidamente rotuladas ou categorizadas.
Ao usar os parâmetros PreContent
e PostContent
, você pode adicionar rótulos em cada tabela para que qualquer pessoa possa discernir facilmente o conteúdo do relatório.
O parâmetro PreContent
especifica o texto a ser adicionado antes da tag de abertura <TABLE>
e o parâmetro PostContent
especifica o texto a ser adicionado após a tag de fechamento </TABLE>
. Os valores adicionados nesses parâmetros não são convertidos automaticamente em código HTML, então você precisa usar explicitamente tags HTML para que sejam renderizados corretamente como elementos HTML.
Atualize o script usando os comandos abaixo e depois execute o script no console do PowerShell.
Abaixo estão as alterações no script:
- Um novo comando é adicionado para obter o nome do computador. O valor da variável
$ComputerName
tem a tag<h1>
para alterar o formato do texto para cabeçalho quando renderizado em um navegador. - Diferentes rótulos são adicionados em cada tabela usando o Parâmetro
PreContent
e os valores são colocados em tags<h2>
- Um rótulo de data de criação é adicionado ao final do relatório usando o Parâmetro
PostContent
e o valor é colocado na tag<p>
.
Você pode ver que com um pouco de trabalho extra, o relatório pode ficar muito melhor, o relatório deve ser atualizado conforme mostrado abaixo.

Alterando o Layout da Tabela Usando o Parâmetro As
Talvez, a tabela HTML gerada tenha várias colunas e você queira alterar o formato para exibir corretamente o valor como uma lista, você pode usar o parâmetro As
. Por padrão, quando você redireciona a saída para ConvertTo-html
, o PowerShell gera uma tabela HTML que se assemelha ao formato de tabela do Windows PowerShell.
Conforme você pode ver na captura de tela abaixo, o cabeçalho da tabela exibe os nomes das propriedades, como Versão, Legenda, Número da Compilação e Fabricante, e cada linha da tabela representa um objeto e exibe os valores do objeto para cada propriedade.

Para alterar o layout da tabela para lista, use o parâmetro -As
, seguido de Lista. O PowerShell gera uma tabela HTML de duas colunas para cada objeto que se assemelha ao formato de lista do Windows PowerShell. A primeira coluna exibe os nomes das propriedades, como Versão, Legenda, Número da Compilação e Fabricante, e a segunda coluna exibe o valor da propriedade.

A partir dos exemplos acima, agora você tem uma ideia de como alterar o layout da tabela. Vamos aplicar o parâmetro As
em nosso script para alterar o layout das tabelas de informações do Sistema Operacional, Processador, BIOS e Disco para o formato de lista.
Atualize o script com o código abaixo. O script possui o parâmetro -As
nas linhas de comando para Sistema Operacional, Processador, BIOS e Disco.
Após aplicar o parâmetro -As
, o relatório deve ser atualizado como mostrado abaixo. Os layouts de tabela para as informações do Sistema Operacional, Processador, BIOS e Disco agora são alterados para lista.

Enhancing The Report Using CSS
Vamos levar o relatório para o próximo nível e começar a adicionar o design usando CSS. O CSS é usado para controlar como o relatório HTML aparecerá em um navegador da web. O CSS controla as fontes, o texto, as cores, os fundos, as margens e o layout. No final desta seção, você deverá ser capaz de ver como o relatório será transformado de formato simples para rico usando CSS.
Existem três maneiras de aplicar CSS em HTML, como Inline, Internal e External. Para este artigo, você aplicará o método Internal usando o parâmetro Header
no relatório HTML.
O parâmetro Header
especifica o conteúdo da tag <HEAD>
. A tag <HEAD>
é parte da estrutura HTML onde você coloca o código para CSS. Como você pode ver na captura de tela abaixo, a tag <head>
já está incluída quando o código HTML é gerado pelo cmdlet ConvertTo-Html
.

Vamos agora usar CSS para formatar o relatório HTML. Primeiro, copie o código abaixo e cole no início do script. O código CSS atribuído à variável $header
mudará a formatação dos textos no relatório que estão dentro da tag <h1>
.
Em seguida, use o parâmetro Header
e atribua a variável $header
. Atualize o script usando o código abaixo.
Ao executar o script, o relatório deve ser atualizado como mostrado abaixo. Note que o único elemento HTML afetado é o <h1>
, que é aplicado ao rótulo “Nome do computador“. Os passos acima são um ótimo exemplo de como você pode controlar ou manipular o design do relatório HTML usando CSS.

Para adicionar mais design a outras tabelas e etiquetas que estão colocadas na tag <h2>
no relatório, continue atualizando a variável $header
com o código CSS abaixo.
#CreationDate {

Depois de atualizar e executar o script, o relatório deve ser formatado como mostrado abaixo – Graças ao CSS, agora está visualmente atraente e profissional.
Usando os Atributos Id e Class em HTML e CSS
Os elementos HTML são os blocos de construção de todo o seu relatório HTML, o CSS utiliza esses elementos como seletor para saber onde o estilo deve ser aplicado. Nos exemplos anteriores, o código CSS foi aplicado aos elementos HTML
h1
,h2
etabela
no relatório. Mas e se você precisar aplicar estilos diferentes em elementos diferentes? É aqui que entram os atributos id e class. Ao projetar seu relatório HTML, você pode usar id ou class para definir um único elemento.
Por favor, note que um elemento HTML só pode ter um id exclusivo que pertence a esse único elemento, enquanto um nome de classe pode ser usado por vários elementos. Para os desenvolvedores web, esses atributos não são apenas para projetar a página, mas principalmente para serem usados em scripts para manipular como a página responderá a cada evento ou solicitação.
Vamos aplicar os atributos id e class no relatório HTML. Como você pode ver no trecho de código abaixo, a etiqueta de data de criação está colocada na tag <p>
.

Quando o relatório é gerado e visualizado no navegador, a etiqueta de data de criação é formatada como mostrado abaixo.
Para formatar o rótulo da data de criação usando o atributo id – Primeiro, atribua um nome de id ‘CreationDate‘ à tag <p>
. O nome do id deve ser colocado dentro da tag de início. O código atualizado é mostrado abaixo.
Segundo, crie um novo código CSS para formatar o rótulo da data de criação. Use o símbolo #
seguido pelo nome do ID ao declarar um ID em CSS. Adicione o código CSS abaixo na variável $header
e depois salve e execute o script no console do PowerShell.

Após atribuir o id e criar um novo código CSS que direcione o atributo id da tag <p>
, o relatório deve ser atualizado conforme mostrado abaixo.

Vamos aplicar o atributo de classe na tabela Informações de Serviço. Usando CSS, altere a cor do texto para verde **quando o valor do estado for Executando e use vermelho quando o valor for Parado.
Como mencionado anteriormente, os atributos de classe podem ser atribuídos a vários elementos HTML. No relatório HTML, o elemento que contém o texto Executando e Parado é a tag <td>
. Usando o método -Replace
do PowerShell, atribua os nomes das classes StatusExecutando e StatusParado a todas as tags <td>
dentro da tabela Informações de Serviço. Use os comandos abaixo e atualize o script.
Adicione o seguinte código CSS abaixo na variável $header
. Todas as tags <td> com um nome de classe de RunningStatus terão o valor hexadecimal #008000
, que é equivalente à cor verde, e todas as tags <td> com um nome de classe de StopStatus terão o valor hexadecimal #ff0000
, que é equivalente à cor vermelha.

Salve e execute o script. A tabela de informações do serviço no relatório deve ser atualizada como mostrado abaixo.

Abaixo está o layout final do relatório HTML formatado usando CSS.
#O comando abaixo irá gerar o relatório em um arquivo HTML
Conclusão
Neste artigo, você aprendeu como converter os objetos (resultado) para código HTML e gerá-los em um relatório HTML.
I hope this article gives you enough ideas on how you can create and improve your HTML report. Cheers!
Gerar o relatório em formato HTML oferece a você a capacidade de aplicar CSS que torna o relatório mais fácil de aprimorar e manipular. Existem muitos recursos online gratuitos que você pode usar para aprimorar suas habilidades de codificação HTML e design CSS.
- Leitura Adicional
- ConvertTo-Html
- Coletando Informações Sobre Computadores