PowerShell Ausgaben speichern

Daten von der Windows PowerShell ablegen

Grundlagen

In der Regel gibt die PowerShell die Ergebnisse auf dem Bildschirm aus. Möchte man die Ausgabe in eine Textdatei speichern, reicht es, wenn man das Cmdlet out-file verwendet. Aber es funktioniert ebenso, wenn man den Weiterleitungsoperator > benützt. Möchte man die Ergebnisse jedoch als CSV, XML oder HTML speichern, so bietet die Powershell die drei folgenden Cmdlets. Export-CSV ,Export-CliXML und Convertto-html. Natürlich gibt es neben dem Export auch einen Import. Man kann also genauso gut Inhalte aus CSV oder XML in die PowerShell einlesen.

In den folgenden Beispielen wird für die Weitergabe der Ergebnisse die Pipeline verwendet. Wie man die bei einer Befehlskette anwendet könnt ihr hier nachlesen.

Zum Artikel: Powershell Pipeline richtig verwenden

Beispiel für TXT, CSV und XML

Ein kleines Beispiel soll die Funktionsweise erläutern. Zunächst lassen wir uns die ersten 6 Prozesse anzeigen, welche am meisten CPU Zeit verbrauchen. Das Ergebnis speichern wir anschließend in eine Variable $P. Anschließend speichern wir die Inhalte einmal als Prozesse.txt, Prozesse.csv und Prozesse.xml Datei ab.

$P = get-process | Sort-Object CPU -Descending | Select-Object -First 6
$P > f:\Prozesse.txt
$P | Export-Csv f:Prozesse.csv
$P | Export-Clixml f:Prozesse.xml
Ausgabe der Datei in unterschiedlichen Formaten

Beispiel für HTML

Relativ einfach geht auch das speichern in eine HTML Datei. Man verwendet hierzu das Cmdlet convertto-html.

$P | ConvertTo-Html > f:\Prozesse.html

Da dies eine sehr unübersichtliche Anordnung aller Eigenschaften der Prozesse ist, wäre es sinnvoll nur bestimmte Parameter auszugeben. In unserem Fall lassen wir nur den Namen, Path und CPU ausgeben bzw. in ein HTML Dokument speichern.

$P | ConvertTo-Html -Property Name, Path, CPU > f:\Prozesse.html
Prozesse mit den drei Eigenschaft: Name, Path und CPU als HTML

Das speichern der Ausgabe als HTML bietet sehr schöne Möglichkeiten. Man könnte sich z.B. alle Dienste nach deren Status in unterschiedlichen Farben ausgeben lassen. Für den Einsatz von Farben muss man lediglich den <tr> Tag ersetzen und ihn mit einer Farbe belegen. Für die Fallunterscheidung ob der Status nun läuft oder nicht, kann man -like verwenden. Wer noch eine paar Grundlagen Informationen zu Schleifen und Bedingungen benötigt, kann diese hier nachlesen.

Zum Artikel: Kurzeinführung 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>"}} > f:\get-service.html
Dienste als HTML Tabelle