Viele Kunden fragen mich oft, wie ich denn bei meinen Skripten immer so schöne .csv Dateien generiere.
Der Trick ist einfach: PowerShell Custom Objekte und das Export-Csv Commandlet.
Index
Einführung in PowerShell Custom Objekte
Custom Objekte sind im Prinzip “generische” Objekte, die man sich selbst in PowerShell erzeugen kann. Es gibt viele Einsatzmöglichkeiten, zum Beispiel
- eine “Status-Variable” bei Log-Files vorzuhalten oder
- mehrere Informationen gleichzeitig an eine Funktion zu übergeben, wenn man nicht zig Variablen benutzen möchte.
Erzeugung mit „New-Object“ cmdlet
Ein Custom PowerShell Objekt lässt sich ganz einfach mit dem Commandlet “New-Object” erzeugen:
Wir haben damit ein Objekt vom Typ “PSCustomObject” erzeugt.
Dieses Objekt ist jetzt erst einmal leer und hat keine weiteren Eigenschaften. Wir können neue Eigenschaften mit dem Commandlet “Add-Member” hinzufügen:
Unser Objekt hat jetzt die Eigenschaft “Color = Red”. Dies können wir beliebig oft wiederholen und dem Objekt so verschiedene Eigenschaften geben:
CSV-Export der Custom Objekte
Das Praktische ist, dass wir nun unser Objekt als Ganzes an weitere Funktionen oder Commandlets übergeben können:
Oder mit einer Funktion:
param($myInput)
$myInput Export-Csv -NoTypeInformation -Path .\log.csv -Delimiter ‚;‘
}
my-export $object
Die resultierende .csv Datei sieht dann so aus:
Color | Size |
Red | 1 |
In der Textvariante:
„Color“;“Size“
„Red“;“1″
Natürlich können wir auch mehrere Objekte in einer Liste oder einem Array zusammenfassen und diese dann zusammen ausgeben:
$list = @()
$object1 = New-Object PSObject
$object1 | Add-Member NoteProperty „Name“ „Alice“
$object1 | Add-Member NoteProperty „Color“ „Red“
$object1 | Add-Member NoteProperty „Size“ 1
$list += $object1
$object2 = New-Object PSObject
$object2 | Add-Member NoteProperty „Name“ „Bob“
$object2 | Add-Member NoteProperty „Color“ „Blue“
$object2 | Add-Member NoteProperty „Size“ 2
$list += $object2
$list | Export-Csv -NoTypeInformation -Path .\log.csv -Delimiter ‚;‘
Die resultierende .csv Datei beinhaltet dann automatisch beide Objekte:
Name | Color | Size |
Alice | Red | 1 |
Bob | Blue | 2 |
Beziehungsweise als Text:
„Name“;“Color“;“Size“
„Alice“;“Red“;“1″
„Bob“;“Blue“;“2″
Dieser Artikel entstand bei Projekten der FirstAttribute AG
AD Consulting | AD Migration
Für Fragen zu unseren Leistungen stehen
wir Ihnen unter Kontakt gern zur Verfügung.
Leave a Reply
<p>Danke für Ihre Anregungen, Fragen und Hinweise.<br/>Infos zum <a href="https://www.active-directory-faq.dekontakt/">Datenschutz</a></p>