L’esempio A8 potrebbe essere utilizzato per monitorare un server e sarebbe magnifico se fosse più semplice leggerne l’output. Sapete già come memorizzare l’output in formato CSV e XML; allora vi presento un altro formato di output che potrebbe a volte tornarvi ancora più utile: HTML. E il cmdlet ConvertTo-HTML è utilizzato per trasformare il vostro output in questo formato. L’output non consiste più in un file ma, come con la maggior parte degli altri cmdlet, è in una forma che è possibile modificare direttamente utilizzando un pipe. Alla fine potete comunque memorizzare il testo prodotto da questo cmdlet in un file, in maniera da consentirne, ad esempio, la visualizzazione utilizzando un browser web.
Per ulteriori informazioni sul comando ConvertTo-HTML è possibile consultare la guida di riferimento, a
questo indirizzo.
Ora useremo una serie di mini-esempi per esplorare le varie opzioni rese disponibili dal cmdlet ConvertTo-HTML.
A9: Convertite l’output prodotto da Get-Service in formato HTML. Utilizzate il cmdlet ConvertTo-HTML, che può lavorare direttamente con una lista di oggetti. Suggerimento: se la lista impiega troppo tempo ad essere generata annullate l’elaborazione con CTRL+C.
A10: Infine utilizzate i comandi che conoscete per memorizzare l’output dell’esercizio precedente in un file di nome “.\A10.html” e date un’occhiata al contenuto prodotto. Suggerimento: Potete usare Invoke-Item .\a10.html per lanciare il vostro browser web predefinito ed aprire il file direttamente da PowerShell. Non dimenticate di indicare il percorso corretto di A10.html! Se preferite, aprite il file anche da Esplora risorse.
Per ulteriori informazioni sul comando Invoke-Item è possibile consultare la guida di riferimento, a questo indirizzo:
http://www.powershell.it/Comandi/v1.0/Invoke-Item.aspx
ConvertTo-HTML consente di limitare l’output così da renderlo più leggibile. Usate ConvertTo-HTML ed indicate con il parametro –Property la lista delle proprietà da includere nell’output HTML, es. … | ConvertTo-HTML –property name, status.
A11: Continua dall’esercizio A10: Generate una pagina web più concisa e riportate solo il nome e lo stato di ciascun servizio. Potete anche ordinare l’output per stato prima della conversione. Suggerimento: la vostra linea di comando utilizzerà quattro comandi distinti:
lista di tutti i servizi, ordina per stato, conversione in HTML, memorizzazione su file.
Poichè ConvertTo-HTML crea del testo HTML, l’output può essere modificato facilmente se si ha un po’ di esperienza con questo formato. Non è un compito tipicamente svolto utilizzando Windows PowerShell, ma la shell lo consente. Provate ad indovinare quale sarà il risultato dello script che segue prima di copiarlo ed eseguirlo in una finestra di Windows PowerShell:
Get-Service | ConvertTo-HTML -Property Name,Status | foreach {
if ($_ -like "*<td>Running</td>*") {$_ -replace "<tr>", "<tr bgcolor=’green’>"}
else {$_ -replace "<tr>", "<tr bgcolor=’red’>"}} > .\Get-Service.html
L’output dovrebbe essere simile a quello visualizzato nella figura che segue. L’esempio funziona con lo stesso principio dell’output del cmdlet Write-Host ma, in questo caso, le singole linee del file HTML sono rielaborate: viene impostato il markup HTML per le righe della tabella in maniera tale che abbiano uno sfondo di colore verde (bgcolor green) o rosso (bgcolor red). Poiché non tutti conoscono HTML, questo esempio è fornito, al contrario degli altri, con la soluzione completa.
FIGURA 6: COLORAZIONE DELL’OUTPUT HTML UTILIZZANDO LA MANIPOLAZIONE DELL’HTML