PowerShell è uno strumento potente che ti aiuta a semplificare e automatizzare compiti noiosi e ripetitivi. Gli amministratori utilizzano tipicamente PowerShell per estrarre informazioni da un sistema o un database quando l’insieme di dati richiesto deve essere presentato come un report. Ma i report in formato testo o CSV spesso mancano dello stile e della grafica di un file HTML. In questo tutorial, imparerai come creare un report HTML con PowerShell.
PowerShell ti permette di creare report HTML e di allontanarti da questi formati anonimi. Utilizzando solamente PowerShell, puoi rendere un report più interessante con l’HTML, consentendoti di presentare in modo significativo i dati estratti dal sistema. Puoi persino applicare Cascading Style Sheets (CSS) per personalizzare facilmente il layout del tuo report.
In questo articolo, imparerai come utilizzare il cmdlet ConvertTo-HTML
combinato con Out-file
per generare un report HTML. Imparerai anche lo scripting di base per il CSS e come può essere utile per formattare il design del tuo report basato su HTML.
Prerequisiti
Questo articolo sarà una guida pratica. Se intendi seguire le istruzioni, assicurati di avere i seguenti prerequisiti configurati in anticipo.
- Tutti gli esempi verranno mostrati utilizzando Windows 10 Build 1709, ma questa versione non è obbligatoria
- Windows PowerShell 5.1 o una versione successiva o PowerShell Core 7
- Un browser come Internet Explorer o Google Chrome
Creazione di un rapporto di informazioni di base sul computer utilizzando ConvertTo-Html
Per dimostrare come utilizzare il cmdlet ConvertTo-Html
e i suoi parametri, creerai uno script che ottiene informazioni di base su una macchina (come sistema operativo, processore, BIOS e spazio su disco disponibile) e genera le informazioni in un rapporto HTML.
Inizi con un comando che raccoglie informazioni sulla versione del sistema operativo da una macchina. Apri la console di PowerShell, quindi copia e incolla il comando sottostante e premi Invio per eseguire il comando.
Quando esegui il comando sopra, il cmdlet Get-CimInstance
raccoglie le proprietà della classe Win32_OperatingSystem
che contiene le informazioni sul sistema operativo della macchina, il comando restituirà molti risultati, quindi è necessario un filtro per ottenere solo le informazioni pertinenti. Il risultato dovrebbe assomigliare allo screenshot mostrato di seguito.

Ora che hai ottenuto il comando per restituire le informazioni sul sistema operativo, convertiamo il risultato in codice HTML. Per convertire il risultato (oggetti) dal comando precedente in codice HTML, puoi inviare in input l’output del cmdlet Get-CimInstance
a ConvertTo-Html
. Esegui il comando seguente nella console di PowerShell.
Puoi vedere nella seguente schermata che PowerShell genera automaticamente i tag HTML dall’output del cmdlet Get-CimInstance
. Il risultato viene visualizzato in formato tabella, dove l’intestazione della tabella mostra i nomi delle proprietà come Versione, Titolo, NumeroBuild e Produttore. Ogni riga della tabella rappresenta un oggetto e mostra i valori dell’oggetto per ogni proprietà.

Esportare il rapporto in un file HTML
Ora che hai ottenuto il risultato e convertito in codice HTML, esporta il rapporto in un file HTML usando il cmdlet Out-file
e visualizza il rapporto in un browser web. Inoltra l’output del cmdlet ConvertTo-Html
e specifica il percorso in cui desideri salvare il rapporto utilizzando il parametro -FilePath
e utilizza Basic-Computer-Information-Report.html come nome del file.
Apri il tuo PowerShell ISE o qualsiasi editor di testo, copia il codice qui sotto e salva lo script con il nome Generate-HTML-Report.Ps1
Esegui lo script Generate-HTML-Report.Ps1 nella tua console PowerShell
Dopo aver eseguito lo script, apri il file Basic-Computer-Information-Report.html in un browser web. Il browser web interpreta il codice del rapporto HTML e visualizza i dati sullo schermo del browser. Il rapporto dovrebbe contenere informazioni sul sistema operativo della macchina simili alla schermata sottostante.

Unione dei rapporti utilizzando il parametro Fragment
A questo punto, hai uno script che ottiene le informazioni sul sistema operativo del computer e esporta i risultati nel rapporto HTML. Il tuo obiettivo è aggiungere ulteriori comandi nello script per ottenere le restanti informazioni del computer come il processore, il BIOS, il disco e i servizi.
Ogni comando restituirà diverse informazioni sul computer formattate come codice HTML. Per consolidare correttamente le informazioni in un unico rapporto HTML, utilizza il parametro Fragment
per ottenere solo la parte della tabella del codice HTML generato dal cmdlet ConvertTo-Html
.
Come puoi vedere nello screenshot di seguito, PowerShell genera tutti gli elementi HTML di base quando l’output viene inviato al cmdlet ConvertTo-Html
.

ConvertTo-Html
cmdletQuando si utilizza il parametro Fragment
, PowerShell genera solo l’elemento tabella HTML. Gli elementi <HTML>
, <HEAD>
, <TITLE>
, <BODY>
e altri vengono omessi. Il risultato è mostrato di seguito.

Ora che sai già come funziona il parametro Fragment
dall’esempio precedente, applichiamolo allo script.
I comandi nello script sottostante eseguono le seguenti operazioni:
- Le prime cinque righe di comandi ottengono diverse informazioni dal computer come il sistema operativo, il processore, il BIOS, il disco e i servizi.
- Filtra i risultati utilizzando il parametro
-Property
per visualizzare solo i valori rilevanti - Memorizza i valori nelle rispettive variabili. Ogni informazione è formattata come tabella utilizzando
-Fragment
- Raggruppare le tabelle HTML utilizzando il parametro
-Body
in un unico rapporto HTML - Impostare il titolo del rapporto su “Rapporto Informazioni Computer” utilizzando il parametro
-Title
- Esportare il rapporto come file HTML utilizzando il parametro
Out-file
Ulteriori informazioni sullo script sono disponibili nei commenti nel frammento di codice qui sotto. Aggiornare lo script con il codice seguente.
Eseguire lo script nella console di PowerShell. È possibile visualizzare l’output del rapporto come mostrato di seguito.

Aggiunta di una etichetta utilizzando il parametro PreContent
e PostContent
A questo punto, lo script può ora ottenere tutte le informazioni di base di un computer ed esportare il risultato in HTML. Tuttavia, come puoi vedere nella schermata sopra, qualcuno o un destinatario del rapporto potrebbe avere difficoltà a comprendere il contenuto quando si rimuove l’annotazione in quanto le informazioni non sono correttamente etichettate o categorizzate.
Utilizzando i parametri PreContent
e PostContent
, è possibile aggiungere etichette a ciascuna tabella in modo che chiunque possa facilmente distinguere il contenuto del rapporto.
Il parametro PreContent
specifica il testo da aggiungere prima del tag di apertura <TABLE>
e il parametro PostContent
specifica il testo da aggiungere dopo il tag di chiusura </TABLE>
. I valori aggiunti a questi parametri non vengono convertiti automaticamente in codice HTML, quindi è necessario utilizzare esplicitamente i tag HTML in modo che vengano correttamente visualizzati come elementi HTML.
Aggiorna lo script utilizzando i comandi di seguito e quindi esegui lo script nella console di PowerShell.
Ecco le modifiche allo script:
- Viene aggiunto un nuovo comando per ottenere il nome del computer. Il valore della variabile
$ComputerName
ha un tag<h1>
per cambiare il formato del testo in un’intestazione quando viene visualizzato in un browser. - Vengono aggiunte diverse etichette in ciascuna tabella utilizzando il parametro
PreContent
e i valori vengono inseriti nei tag<h2>
- Viene aggiunta un’etichetta con la data di creazione alla fine del rapporto utilizzando il parametro
PostContent
e il valore viene inserito nel tag<p>
Puoi vedere che con un po’ di lavoro extra, il rapporto può avere un aspetto molto migliore, il rapporto dovrebbe essere aggiornato come mostrato di seguito.

Cambiare la disposizione della tabella utilizzando il parametro As
.
Forse, la tabella HTML generata ha più colonne e desideri cambiare il formato per visualizzare correttamente il valore come elenco, puoi utilizzare il parametro As
. Per impostazione predefinita, quando invii l’output a ConvertTo-html
, PowerShell genera una tabella HTML simile al formato tabella di Windows PowerShell.
Come puoi vedere nella schermata sottostante, l’intestazione della tabella mostra i nomi delle proprietà come Versione, Didascalia, Numero di build e Produttore e ogni riga della tabella rappresenta un oggetto e mostra i valori dell’oggetto per ogni proprietà.

Per cambiare il layout della tabella in elenco, utilizza il parametro -As
seguito da List. PowerShell genera una tabella HTML a due colonne per ogni oggetto che assomiglia al formato elenco di Windows PowerShell. La prima colonna mostra i nomi delle proprietà come Versione, Didascalia, Numero di build e Produttore e la seconda colonna mostra il valore della proprietà.

Dagli esempi precedenti, ora hai un’idea su come cambiare il layout della tabella, applichiamo il parametro As
nel nostro script per cambiare il layout delle tabelle delle informazioni sul sistema operativo, processore, BIOS e disco in formato elenco.
Aggiorna lo script con il seguente codice di seguito. Lo script ha il parametro -As
nelle righe di comando per il sistema operativo, il processore, il BIOS e il disco.
Dopo l’applicazione del parametro -As
, il rapporto dovrebbe essere aggiornato come mostrato di seguito. La disposizione delle tabelle per le informazioni sul sistema operativo, sul processore, sul BIOS e sul disco è ora cambiata in elenco.

Migliorare il rapporto utilizzando CSS
Portiamo il rapporto al livello successivo e iniziamo ad aggiungere il design utilizzando CSS. CSS viene utilizzato per controllare l’aspetto del rapporto HTML in un browser web. CSS controlla i caratteri, il testo, i colori, gli sfondi, i margini e il layout. Alla fine di questa sezione, dovresti essere in grado di vedere come il rapporto si trasforma da un formato semplice a un formato ricco utilizzando CSS.
Esistono tre modi per applicare CSS in HTML, come Inline, Internal ed External. Per questo articolo, applicherai il metodo Internal utilizzando il parametro Header
nel rapporto HTML.
Il parametro Header
specifica il contenuto del tag <HEAD>
. Il tag <HEAD>
fa parte della struttura HTML in cui si inserisce il codice per CSS. Come puoi vedere nella schermata sottostante, il tag <head>
è già incluso quando il codice HTML viene generato dal cmdlet ConvertTo-Html
.

Ora utilizziamo CSS per formattare il rapporto HTML. Prima, copia il codice di seguito e incollalo all’inizio dello script. Il codice CSS assegnato alla variabile $header
cambierà la formattazione dei testi nel rapporto che sono posizionati nel tag <h1>
.
In seguito, utilizza il parametro Header
e assegna la variabile $header
. Aggiorna lo script utilizzando il codice di seguito.
Quando esegui lo script, il rapporto dovrebbe essere aggiornato come mostrato di seguito. Nota che l’unico elemento HTML interessato è il tag <h1>
che si applica all’etichetta “Computer name”. I passaggi sopra sono un ottimo esempio di come è possibile controllare o manipolare il design del rapporto HTML utilizzando CSS.

Per aggiungere più design ad altre tabelle e etichette che sono posizionate nel tag <h2>
nel report, continua ad aggiornare la variabile $header
con il seguente codice CSS.
#CreationDate {

Dopo aver aggiornato ed eseguito lo script, il report dovrebbe essere formattato come mostrato di seguito – Grazie a CSS ora è visivamente attraente e professionale.
Utilizzando gli attributi Id e Class in CSS
Gli elementi HTML sono i mattoni fondamentali dell’intero report HTML, CSS utilizza questi elementi come selettori per sapere dove applicare lo stile. Dai precedenti esempi, il codice CSS è stato applicato agli elementi HTML
h1
,h2
etable
nel report. Ma cosa succede se hai bisogno di applicare uno stile diverso a elementi diversi? Ecco dove entrano in gioco gli attributi id e class. Nel progettare il tuo report HTML, puoi utilizzare sia id che class per definire un singolo elemento.
Si prega di notare che un elemento HTML può avere solo un id univoco che appartiene a quell’unico elemento, mentre un nome di classe può essere utilizzato da elementi multipli. Per i web developer, questi attributi non sono solo per la progettazione della pagina ma vengono utilizzati principalmente nella scrittura degli script per gestire come la pagina risponderà ad ogni evento o richiesta.
Applichiamo gli attributi id e class nel report HTML. Come si può vedere nel frammento di codice sottostante, l’etichetta della data di creazione è posizionata nel tag <p>
.

Quando il report viene generato e visualizzato nel browser, l’etichetta della data di creazione viene formattata come mostrato di seguito.
Per formattare l’etichetta della data di creazione utilizzando l’attributo id – Prima, assegna un nome id ‘CreationDate‘ al tag <p>
. Il nome id deve essere inserito all’interno del tag di apertura. Il codice aggiornato è mostrato di seguito.
Secondo, crea un nuovo codice CSS per formattare l’etichetta della data di creazione. Usa il simbolo ‘#’ seguito dal nome ID quando dichiari un ID in CSS. Aggiungi il codice CSS di seguito alla variabile $header
, quindi salva ed esegui lo script nella console di PowerShell.

Dopo aver assegnato l’id e creato un nuovo codice CSS che prende di mira l’attributo id del tag <p>
, il rapporto dovrebbe essere aggiornato come mostrato di seguito.

Applichiamo l’attributo class nella tabella Informazioni sul servizio. Utilizzando CSS, cambia il colore del testo in verde **quando il valore dello stato è Running e usa il rosso quando il valore è Stopped.
Come precedentemente menzionato, gli attributi class possono essere assegnati a più elementi HTML. Nel rapporto HTML, l’elemento che contiene il testo Running e Stopped è il tag <td>
. Utilizzando il metodo -Replace
di PowerShell, assegna i nomi delle classi RunningStatus e StopStatus a tutti i tag <td>
all’interno della tabella Informazioni sul servizio. Utilizza i comandi seguenti e aggiorna lo script.
Aggiungi il seguente codice CSS di seguito alla variabile $header
. Tutti i tag <td> con il nome della classe RunningStatus avranno il valore esadecimale #008000
che è equivalente al colore verde, e tutti i tag <td> con il nome della classe StopStatus avranno il valore esadecimale #ff0000
che è equivalente al colore rosso.

Salva ed esegui lo script. La tabella delle informazioni sul servizio nel report dovrebbe essere aggiornata come mostrato di seguito.

Di seguito è riportato il layout finale del rapporto HTML formattato con CSS.
#Il comando seguente genererà il report in un file HTML
Conclusion
In questo articolo, hai imparato come convertire gli oggetti (risultato) in codice HTML e generarli in un report HTML.
I hope this article gives you enough ideas on how you can create and improve your HTML report. Cheers!
Generare il report in formato HTML ti permette di applicare CSS che rende il report più facile da migliorare e manipolare. Ci sono molti risorse online gratuite che puoi utilizzare per migliorare le tue competenze di codifica HTML e di progettazione CSS.
- Ulteriori letture
- ConvertTo-Html
- Raccolta di informazioni sui computer