Windows PowerShell: HTML-Berichten in PowerShell

Sie können die Cmdlets von Microsoft Windows PowerShell tatsächlich verwenden, um HTML-Berichte zu generieren, die Sie gemeinsam mit Kollegen nutzen können.

Don Jones

Zwischen Ihrer viele Befugnisse hat Windows PowerShell die integrierte Möglichkeit, HTML-Ausgabe von seinen verschiedenen Cmdlets zu erzeugen. Einfach, leiten Sie die Ausgabe Cmdlet ConvertTo-HTML, und leiten Sie die Ausgabe auf Out-File, diese in einer Datei abzurufen. Beispiel:

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

Geben Ihnen eine Liste der Dienste, die ausgeführt werden sollen, sind jedoch nicht. Das ist etwas, die Sie schreiben in einem Intranet-File-Server und Ihrem Helpdesk, überprüfen Sie jeden Morgen haben könnte. Übrigens, sollte bei allen, die Sie eingeben, die ersten vier Zeilen mit den senkrechten Strich (|) enden. Die letzte Zeile endet mit einem Wagenrücklauf.

Wenn Sie die, die interaktiv in die Shell eingeben, sehen Sie die Eingabeaufforderung zu ändern ">>" nach der Eingabe der ersten Zeile Pipe und Wagenrücklauf. Das ist OK. Das bedeutet, dass Windows PowerShell für die nächste Zeile Eingabe wartet. Drücken Sie nach der Eingabe des vierten und letzten Zeile die EINGABETASTE zweimal, um der Shell zu informieren, dass Sie damit fertig sind und dass der Befehl ausgeführt werden soll.

Ein Problem mit dem Cmdlet ConvertTo-HTML ist jedoch, dass es nur für den Umgang mit einem Typ der Ausgabe zu einem Zeitpunkt entwickelt hat. Wenn Sie versuchen, es zahlreiche Objekttypen feed – Dienste, Prozesse oder Ereignisprotokolleinträge – die Ausgabe wird nicht ordnungsgemäß formatiert.

Wenn Sie einen zusammengefassten Bericht Art erstellen möchten, ist der Trick, die verschiedenen Parameter des Cmdlets zu verwenden. Z. B. angenommen, Sie möchten zum Erzeugen eines Berichts, das zuvor erwähnte "Dienste.", die ausgeführt werden sollen enthält, sind jedoch nicht Sie möchten auch das Zeichenblatt, um die 100 neuesten Sicherheitsereignis-Protokolleinträge, die Prozesse, die der Server ausgeführt wird und einige grundlegende Informationen über den Server selbst.

Sie müssen zwei Dinge wissen: erste, der –Fragment-Parameter der ConvertTo-HTML (die Sie in der Hilfedatei befindet) und zum anderen die Tatsache, dass das Cmdlet HTML in eine Datei geschrieben wird.

Wie in meinem ersten Beispiel legt das Cmdlet den HTML-Code in die Pipeline – es dauert eine separate Schritt, um in eine Datei zu erhalten. Scheint im ersten Beispiel umständlich, aber geben uns die Möglichkeit, die wir benötigen dazu:

$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

Bei, die in der Eingabe, beenden Sie jede Zeile mit einem senkrechten Strich außer der letzten Zeile, die nur mit einem Wagenrücklauf endet. Diese Option führt vier verschiedene Befehle, von die jedes einen bestimmter Teil der Informationen und deren Konvertierung in ein HTML-Fragment abgerufen wird.

Ein HTML-Fragment ist eine lange Zeichenfolge aus HTML, das die Header-Tags enthält, die eine vollständige Seite zu machen. Ich bin in den letzten Schritt einfach den HTML-Code in den Textkörper einer vollständigen Seite Wippen und Ausgabe an eine Datei.

Versuchen Sie es ausführen, und sehen, was Sie denken. Es ist ziemlich einfach. Es ist ein Witz, dass Windows PowerShell die einzige Microsoft-Produkt, das HTML ist, "Reinigen", ohne jede Formatvorlage hinzufügen oder Formatierungen ausgibt. Der Nachteil ist, dass "saubere" HTML ziemlich langweilig ist. Das ist absichtlich. Sie durchsehen, um mithilfe einer separaten CSS-Datei attraktiver zu machen.

In HTML erfahren Sie in erster Linie Formatierungen in HTML-<td> Tags. Diese enthalten die Zeilen die Tabelle. <th> Tags enthalten die Spaltenköpfe für die Tabelle. <body> Tag kann ein Standardformat für die gesamte Seite bereitstellen. Erstellen Sie eine Textdatei namens C:\Style.css, und geben Sie Folgendes ein:

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

Sollte zwei Textzeilen zu geben, und auch hier die erste Zeile endet mit dem Pipezeichen. Führen Sie alle diese. Hier finden Sie eine ausführlichere Ausgabe ordentlich formatiert. Leider nicht die CSS, bieten eine Möglichkeit, Stil für abwechselnde Tabellenzeilen der, zumindest nicht in der Weise, dass Windows PowerShell den HTML-Code erzeugt Ausgabe.

Die Parameter –PreContent und –PostContent der ConvertTo-HTML können Sie Abschnittsüberschriften und jeden anderen Text hinzuzufügen. Dies kann helfen, den Bericht lesbarer zu gestalten. Es wird eine beliebige Zeichenfolge übergeben, um –PreContent vor der Tabelle angezeigt. Text an –PostContent gesendet werden nach der Tabelle angezeigt. Finden Sie Beispiele für diese durch das Ausführen von ConvertTo-HTML-Hilfe
–Example in der Shell.

Dies ist ein gutes Beispiel, wie Sie Windows PowerShell verwenden, um hilfreiche Berichte zu Ihren Kollegen zu erzeugen. Es dauert gar nicht viel zusätzliche Arbeit ordentliche aussehende HTML-Ausgabe zu erstellen. Speichern Sie die Seiten in einem Intranet-File-Server, machen Sie sie für Kollegen, Managern und anderen Personen zugänglich, die sie benötigen könnten.

Don Jones

Don Jones ist ein Microsoft MVP-Auszeichnung Empfänger und Autor von "erfahren Sie, Windows PowerShell in einem Monat von Rezepten" (Manning Publikationen Co., 2010), ein Buch soll helfen, alle Administratoren wirksam, mit Windows PowerShell. Jones bietet auch öffentliche und vor-Ort-Windows PowerShell-Schulungen. Kontaktieren Sie ihn über seine Website unter ConcentratedTech.com.

Verwandter Inhalt