none
Format einer Spalte an out-gridview uebergeben RRS feed

  • Frage

  • Halli hallo,

    vielleicht kann mir jemand einen guten Tip geben. 

    Und zwar moechte ich eine csv-Datei oder eine txt.Datei mit out-gridview ausgeben. Das ist ja recht simple z.b. so:

    $p = import-csv -Delimiter : -Path c:\test.csv 
    $p | get-member
    $p | out-gridview

    Allerdings sollen die enthaltenen Spalten vom unterschiedlichen Typ sein. Wenn ich jetzt naemlich mit Out-GridView eine Zeile Filtern moechte steht da immer <Empty>.  Ich hab in der einen Spalte aber ein Datum und moechte es auch so filtern koennen.

    Bei der Funktion "(Get-Date ).ToString("yyyy-MM-dd HH:mm:ss")' klappt das auch ganz wunderbar, so wie ich es mir vorstelle. Nun moechte ich aber nicht das aktuelle Datum haben, sonder das, was in der Datei drin steht.

    Hat da jemand ein Tip fuer mich, wie ich das Format der einzelnen Spalte an GridView uebergeben kann?

    Mittwoch, 20. Februar 2013 13:28

Antworten

  • Also ich habe eine Datei mit folgenden CSV Daten:

    Nachname, Name, Datum
    Gaertner,Sabine,03.04.2010
    Loewe,Kerstin,02.07.2011
    Mueller,Claudia,22.03.2013

    Nun mache ich folgendes:

    # Korrekt Typisiertes Objekt erstellen
    $Obj = New-Module -AsCustomObject -ScriptBlock {
        [String]$Nachname = $Null
        [String]$Name = $Null
        [DateTime]$Datum = Get-Date
        
        Export-ModuleMember -Variable *
        }
    
    Import-CSV c:\temp\daten.txt -Delimiter ',' |  ForEach-Object {  
        # Typisierte Objektvorlage benutzen
        $Obj.Nachname = $_.Nachname
        $Obj.Name = $_.Name
        $Obj.Datum = [DateTime]::Parse($_.Datum)
        
        $Obj
    } | Out-GridView

    Siehe: PowerShell eigene Objekte erstellen Custom Objects

    http://www.admin-source.de/BlogDeu/463/powershell-eigene-objekte-erstellen-custom-objects


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    • Als Antwort markiert Su Si Donnerstag, 21. Februar 2013 15:35
    Donnerstag, 21. Februar 2013 11:49
  • # Korrekt Typisiertes Objekt erstellen
    $Obj = New-Module -AsCustomObject -ScriptBlock {
        [String]$Nachname = $Null
        [String]$Name = $Null
        [DateTime]$Datum = Get-Date
        
        Export-ModuleMember -Variable *
        }
    
    Import-CSV c:\temp\daten.txt -Delimiter ',' |  ForEach-Object {  
        # Typisierte Objektvorlage benutzen
        $Obj.Nachname = $_.Nachname
        $Obj.Name = $_.Name
        $Obj.Datum = [DateTime]::Parse($_.Datum)
        
        $Obj
    } | Select-Object Nachname,Name,Datum |  Out-GridView


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    • Als Antwort markiert Su Si Donnerstag, 28. Februar 2013 09:03
    Mittwoch, 27. Februar 2013 15:50

Alle Antworten

  • Also ich habe eine Datei mit folgenden CSV Daten:

    Nachname, Name, Datum
    Gaertner,Sabine,03.04.2010
    Loewe,Kerstin,02.07.2011
    Mueller,Claudia,22.03.2013

    Nun mache ich folgendes:

    Import-CSV c:\temp\daten.txt -Delimiter ',' | Select-Object Nachname,Name,@{Name='Datum';Expression={[DateTime]::Parse($_.Datum)}} | Out-GridView

    Geht doch ! ;-)

    Siehe: http://msdn.microsoft.com/de-de/library/vstudio/system.datetime_methods.aspx

    und : http://technet.microsoft.com/en-us/library/ff730948.aspx


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    Mittwoch, 20. Februar 2013 15:26
  • Hmmm...  leider nicht ganz das was ich versucht hatte zu beschreiben. Nun wird das Datum zwar so dargestellt, wie ich es moechte, allerdings moechte ich es auch so sortieren lassen koennen.

    Wenn man auf Add criteria\Kriterien hinzufuegen geht steht dort im Feld immer noch  <Empty> bzw. <Leer>  Ich moechte aber, dass Out-gridview weiss, dass es ein Datum ist. Dann erscheint z.B. in dem Feld, wo man was zum Filtern eintragen kann, dd.MM.YYYY und dann kann man auch so schoene Vergleiche machen, wie z.B. liegt dazwischen 

    Donnerstag, 21. Februar 2013 08:50
  • Also ich habe eine Datei mit folgenden CSV Daten:

    Nachname, Name, Datum
    Gaertner,Sabine,03.04.2010
    Loewe,Kerstin,02.07.2011
    Mueller,Claudia,22.03.2013

    Nun mache ich folgendes:

    # Korrekt Typisiertes Objekt erstellen
    $Obj = New-Module -AsCustomObject -ScriptBlock {
        [String]$Nachname = $Null
        [String]$Name = $Null
        [DateTime]$Datum = Get-Date
        
        Export-ModuleMember -Variable *
        }
    
    Import-CSV c:\temp\daten.txt -Delimiter ',' |  ForEach-Object {  
        # Typisierte Objektvorlage benutzen
        $Obj.Nachname = $_.Nachname
        $Obj.Name = $_.Name
        $Obj.Datum = [DateTime]::Parse($_.Datum)
        
        $Obj
    } | Out-GridView

    Siehe: PowerShell eigene Objekte erstellen Custom Objects

    http://www.admin-source.de/BlogDeu/463/powershell-eigene-objekte-erstellen-custom-objects


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    • Als Antwort markiert Su Si Donnerstag, 21. Februar 2013 15:35
    Donnerstag, 21. Februar 2013 11:49
  • wow, ja genau das habe ich gesucht. Vielen vielen dank.

    Kannst du mir vielleicht auch noch sagen, ob es eine moeglichkeit gibt, eine vone excel erzeugte .csv in dem jedes wort in " " steht richtig mit Powershell einzulesen? 

    Donnerstag, 21. Februar 2013 15:37
  • Tut es Import-CSV nicht ?
    Zeig mal Beispieldaten!

    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    Donnerstag, 21. Februar 2013 16:36
  • Noch mal danke fuer deine Antwort. Es hat jetzt alles super funktioniert. Nach langem Suchen habe ich auch den Fehler gefunden. Im Datensatz war eine Spalte mehr als im Header... deshalb hat er immer gesagt, dass irgendwas mit "name" waere.

    Also wie gesagt, noch mal vielen vielen dank fuer deine schnelle Antwort.

    Viele Gruesse

    Montag, 25. Februar 2013 15:29
  • Ich haette da noch mal eine Frage. :)

    Gibt es eine Moeglichkeit, dass die header der Tabelle nicht alphabetisch sortiert werden?

    Also bleiben wir mal bei dem Beispiel

    Nachname, Name, Datum
    Gaertner,Sabine,03.04.2010
    Loewe,Kerstin,02.07.2011
    Mueller,Claudia,22.03.2013

    Wenn man es mit typisierten objekten erzeugt erhaelt man die header immer in alphabetischer Reihenfolge. Also Datum, Nachname, Name.

    Ich moechte aber gerne erst den Namen dann den Nachnamen und dann das Datum haben.

    Ich hab es schon mit sort probiert, aber dabei kann man immer nur die Zeilen sortieren und nicht den Header. Ich habe es auch schon probiert den Header explizit anzugeben, aber dann benutzt er den Header auch als Zeile....

    und eine neue CSV kann ich nicht generieren, weil ich dann zu grosse Perfomance verluste haette.

    Ich bin fuer jede Idee sehr Dankbar ;)

    Mittwoch, 27. Februar 2013 14:02
  • # Korrekt Typisiertes Objekt erstellen
    $Obj = New-Module -AsCustomObject -ScriptBlock {
        [String]$Nachname = $Null
        [String]$Name = $Null
        [DateTime]$Datum = Get-Date
        
        Export-ModuleMember -Variable *
        }
    
    Import-CSV c:\temp\daten.txt -Delimiter ',' |  ForEach-Object {  
        # Typisierte Objektvorlage benutzen
        $Obj.Nachname = $_.Nachname
        $Obj.Name = $_.Name
        $Obj.Datum = [DateTime]::Parse($_.Datum)
        
        $Obj
    } | Select-Object Nachname,Name,Datum |  Out-GridView


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    • Als Antwort markiert Su Si Donnerstag, 28. Februar 2013 09:03
    Mittwoch, 27. Februar 2013 15:50
  • Ach mensch, mit select-object ja auf die idee bin ich noch nicht gekommen.

    Vielen vielen vielen Dank. Du hast mir echt geholfen!!!!

    Liebe Gruesse

    Donnerstag, 28. Februar 2013 09:04