Windows PowerShell: Report HTML in PowerShell

È possibile utilizzare i cmdlet di Microsoft Windows PowerShell per generare report HTML da porte condividere con i colleghi.

Don Jones

Tra le sue competenze di molti Windows PowerShell ha integrato che consente di produrre output HTML dal suo vari cmdlet. È sufficiente inviare l'output di cmdlet ConvertTo-HTML e inviare l'output a Out-file per portarlo in un file. Ad esempio:

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

Che fornirà un elenco di servizi che devono essere in esecuzione, ma non sono. Questo è qualcosa si può scrivere in un file server intranet e l'help desk controlla ogni mattina. Comunque, quando si digita tutto questo, le prime quattro righe devono terminare con il carattere pipe (|). L'ultima riga termina con un ritorno a capo.

Se che digita in modo interattivo nella shell, si noterà che la richiesta di cambiare in ">>" dopo avere digitato il tubo nella prima riga e il ritorno a capo. È un problema. Significa che Windows PowerShell è in attesa di digitare la riga successiva. Dopo aver digitato la quarta e ultima riga, premere INVIO due volte per indicare la shell a termine e che si desidera eseguire il comando.

Un problema con il cmdlet ConvertTo-HTML, tuttavia, è che solo è progettato per gestire un solo tipo di output alla volta. Se si tenta di feed, numerosi tipi di oggetti, servizi, processi o voci del registro eventi, esso non correttamente Formatta l'output.

Se si desidera creare un rapporto consolidato di vario genere, il trucco consiste nell'utilizzare i vari parametri del cmdlet. Ad esempio, si supponga che si desidera produrre un report che include i menzionato in precedenza "servizi che devono essere in esecuzione, ma non". Si desidera inoltre la pagina per visualizzare l'elenco di 100 voci di registro eventi di protezione più recenti, tutti i processi che del server è in esecuzione e alcune informazioni di base sul server stesso.

È necessario conoscere due cose: primo, il parametro –Fragment di ConvertTo-HTML (che si trovano in un file della Guida in linea) e secondo, il fatto che il cmdlet non scriverà codice HTML in un file.

Come nel primo esempio, il cmdlet inserisce il codice HTML nella pipeline, richiede un passaggio distinto per portarlo in un file. Che sembra complicata nel primo esempio, ma ci consentirà di ottenere la funzionalità che è necessario eseguire questa operazione:

$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

Quando si digita in, terminate ogni linea con un carattere pipe, tranne l'ultima riga, appena termina con un ritorno a capo. Questo processo viene eseguito quattro comandi distinti, ognuno dei quali è il recupero di una parte delle informazioni e convertirla in un frammento di HTML.

Un frammento HTML è una lunga stringa di codice HTML che non include i tag di intestazione che costituiscono una pagina completa. Nell'ultimo passaggio, sono semplicemente ascoltarli il codice HTML nel corpo di una pagina completa e l'output in un file.

Provare a eseguire che e vedere cosa ne pensi. È piuttosto semplice. È un scherzo che Windows PowerShell è l'unico prodotto di Microsoft che l'output di "pulire" HTML, senza aggiunta di uno stile o formattazione. Lo svantaggio è che è poco interessante HTML "pulito". Che è volontariamente. È opportuno per renderlo più accattivante utilizzando un file CSS separato.

All'interno di HTML, si applicherà principalmente la formattazione HTML <td> tag. Può contenere le righe della tabella. <th> tag contengono le intestazioni di colonna della tabella. <body> tag può fornire un formato predefinito per l'intera pagina. Creare un file di testo denominato C:\Style.css e immettere le seguenti informazioni:

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

Che dovrebbe assumere due righe di testo per digitare e ancora una volta, la prima riga termina con il carattere di pipe. Eseguire tutte le operazioni che. Sono disponibili che ulteriori output ben formattato. Sfortunatamente, CSS non fornisce un modo per applicare lo stile per la tabella righe alterne, almeno in modo che Windows PowerShell genera il codice HTML di output.

È possibile utilizzare i parametri –PreContent e –PostContent del cmdlet ConvertTo-HTML per aggiungere titoli di sezione e qualsiasi altro testo. Ciò consente di rendere più leggibile il report. Viene visualizzato qualsiasi stringa passata a –PreContent prima della tabella. Dopo la tabella viene visualizzato il testo inviato a –PostContent. È possibile trovare esempi di questi eseguendo il cmdlet ConvertTo-HTML Help
–example nella shell.

Questo è un ottimo esempio di come è possibile utilizzare Windows PowerShell per generare report utili per condividere con i colleghi. Non richiede molto lavoro supplementare per creare una buona ricerca output HTML. Salvando le pagine in un file server intranet, si renderli accessibili ai colleghi, i Manager e tutti gli altri utenti che devono a loro.

Don Jones

Don Jones è un destinatario di riconoscimento di Microsoft MVP e autore di "informazioni su Windows PowerShell in un mese nella" (Manning pubblicazioni CO 2010), un libro progettato per aiutare gli amministratori diventano effettive con Windows PowerShell. Jones offre anche la formazione di Windows PowerShell on-site e pubblica. È possibile contattarlo tramite il suo sito Web all'indirizzo ConcentratedTech.com.

Contenuto correlato