Benutzer mit den meisten Antworten
Tabellen Objekt erstellen und per out-gridview ausgeben

Frage
-
Hallo zusammen,
angenommen ich habe eine csv Datei mit folgendem Inhalt:
Nachname,Vorname,Beginn
Hirsch,Harry,2012-12-02
Dachs,Dieter,2011-11-04Dann könnte ich mir mit:
$objcsv = Import-Csv c:\user.csv $objcsv | out-gridview
total easy die Daten schön in einer Tabelle ausgeben und sortieren, je nachdem wie ich sie brauche. So bräuchte ich es...
Ein weiteres Beispiel, wie sowas super funktioniert:
get-process | Out-GridView
Das Problem ist jetzt, eigentlich habe ich keine csv Datei, sondern die Daten werden halt in der Session zusammengestellt.
Jetzt könnte ich natürlich den dreckigen Weg gehen und mir ne CSV Datei schreiben und gleich wieder einlesen, aber das kann ja nicht im Sinne des Erfinders sein.
Ich blicke jetzt leider nicht, wie ich mir z.B. mit meinen Beispieldaten ne alternative Tabelle bauen kann, die ich wie die csv mit out-gridview ausgeben kann.
Hashtable reicht nicht, da ich ja nicht nur Schlüssel und Wert habe. Auch wenn ich als Wert wieder einen zusätzlichen Hashtable benutze funktioniert die Ausgabe nicht wie bei der CSV.
Arrays, mehrdimensionale Arrays... Ich krieg es auf diesem Weg nicht hin.
Jetzt hätte ich noch versucht, daß per import-csv erzeugte Objekt nachzubauen mit Geschichten wie:
$Object = New-Object PSObject $Object | add-member Noteproperty ???
Aber da fehlt mir noch das Verständnis.
Kann doch eigentlich nicht so schwierig sein oder? Ich habe das Gefühl ich stehe irgendwie auf dem Schlauch, aber der Groschen fällt nicht ;)
Kann mir jemand auf die Sprünge helfen?
Danke!
Gruß
Rainer
- Bearbeitet Denniver ReiningMVP, Moderator Donnerstag, 16. Februar 2012 16:52 Titel angepasst
Antworten
-
Du bist schon auf dem richtigen Weg. Du erstellst ein Array, erzeugst pro Datensatz ein Objekt und fügst dieses dem Array hinzu. Wenn ein Datensatz beispielsweise jeweils die drei Werte: "Nachname,Vorname,Beginn" beinhaltet, dann so:
# einmal am Anfang: $DataArray = New-Object System.Collections.Generic.List[object] # jedesmal wenn einer neuer Datensatz anfällt: $Obj = New-Object Psobject -Property @{ Nachname= $name Vorname = $firstname Beginn = $start } $DataArray.add($obj) # Wenn alle Objekte hinzugefügt wurden: $DataArray | Out-Gridview
Wenn beim Erzeugen eines neuen Objekts alle Properties bereits bekannt sind, kann man die Folge von "add-member Noteproperty..." - Befehlen wie oben gezeigt zusammenfassen und alle Properties direkt mitgeben.
$DataArray kannst du dann wieder mit out-gridview ausgeben. Wie das Ganze nun in deinem Fall genau aussehen würde, hängt davon ab wie deine Daten genau aussehen.Grüße, Denniver
Blog: http://bytecookie.wordpress.com
Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".- Bearbeitet Denniver ReiningMVP, Moderator Donnerstag, 16. Februar 2012 17:08
- Als Antwort markiert daRainer Freitag, 17. Februar 2012 11:45
Alle Antworten
-
Du bist schon auf dem richtigen Weg. Du erstellst ein Array, erzeugst pro Datensatz ein Objekt und fügst dieses dem Array hinzu. Wenn ein Datensatz beispielsweise jeweils die drei Werte: "Nachname,Vorname,Beginn" beinhaltet, dann so:
# einmal am Anfang: $DataArray = New-Object System.Collections.Generic.List[object] # jedesmal wenn einer neuer Datensatz anfällt: $Obj = New-Object Psobject -Property @{ Nachname= $name Vorname = $firstname Beginn = $start } $DataArray.add($obj) # Wenn alle Objekte hinzugefügt wurden: $DataArray | Out-Gridview
Wenn beim Erzeugen eines neuen Objekts alle Properties bereits bekannt sind, kann man die Folge von "add-member Noteproperty..." - Befehlen wie oben gezeigt zusammenfassen und alle Properties direkt mitgeben.
$DataArray kannst du dann wieder mit out-gridview ausgeben. Wie das Ganze nun in deinem Fall genau aussehen würde, hängt davon ab wie deine Daten genau aussehen.Grüße, Denniver
Blog: http://bytecookie.wordpress.com
Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".- Bearbeitet Denniver ReiningMVP, Moderator Donnerstag, 16. Februar 2012 17:08
- Als Antwort markiert daRainer Freitag, 17. Februar 2012 11:45