none
"format-table" schneidet Tabelleninhalte ab RRS feed

  • Frage

  • Hallo Zusammen

    Ich habe zwar die Suchfunktion bemüht, diese hat aber leider nichts zu diesem Thema ausgespuckt. Ich kann mir einfach nicht vorstellen, dass ich der einzige bin, mit diesem Problem.

     

    Problem: Bei der Ausgabe in eine Textdatei, werden Strings, welche länger sind als die maximale Spaltenbreite, einfach abgeschnitten. Ein Beispiel: Ich möchte alle Files in einem bestimmten Ordner, die älter sind als ein gewisses Datum:

    Get-ChildItem H$pfad -Recurse | Where {($_.psIsContainer -eq $false) -and ($_.LastWriteTime -lt $Dl)} | Select-Object FullName, LastWriteTime, LastAccessTime | Out-File $file

    Wenn ich das so mache, wird für alle 3 Spalten gleich viel Platz reserviert. Das heisst, das PFad ist natürlich viel breiter, als zum Beispiel ein Datum. Also habe ich format-table bemüht:

    $a = @{Expression={$_.FullName};Label="Pfad";width=50}, `
    @{Expression={$_.LastWriteTime};Label="LastWriteTime";width=15}, `
    @{Expression={$_.LastAccessTime};Label="LastAccessTime";width=40}
    
    Get-ChildItem H:\p8085_data\studium -Recurse | Where {($_.psIsContainer -eq $false) -and ($_.LastWriteTime -lt $Dl)} | Select-Object FullName, LastWriteTime, LastAccessTime | <strong>format-table $a |</strong> Out-File $pfad
    

    Dann läuft zwar alles durch, ich bekomme im Output-File aber eine Warnung:

    "WARNING: 2 columns do not fit into the display and were removed."

    Wie die Warnung sagt, ich sehe nur eine Spalte. Unbefriedigend.

    Dann habe ich probiert die ganze WindowSize zu ändern, mit:

    $h = get-host
    
    $win = $h.ui.rawui.windowsize
    $win.width = 120 # change to preferred width
    $h.ui.rawui.set_windowsize($win)
    

    Geht bei mir aber nicht. win.width wirft einen Fehler, da es das Attribut width nicht gibt. Dafür muss es doch eine leichte Lösung geben? Kann mir nicht vorstellen, dass man dies absichtlich so verbrochen hat oder ich bin einfach zu dumm und schnall das ned:)

    Danke für eure Hilfe!

    Gruss

     

    Montag, 28. Februar 2011 09:32

Antworten

  • Hier ist ein guter Artikel (in Englisch) zum Thema.

    Grüße, Denniver


    http://bytecookie.wordpress.com/
    • Als Antwort markiert nam.eless Mittwoch, 2. März 2011 08:39
    Montag, 28. Februar 2011 13:41
    Moderator

Alle Antworten

  • beim format-table cmdlet gibt es die option -auto -wrap

    -AutoSize [<SwitchParameter>]
        Passt Größe und Anzahl der Spalten entsprechend der Länge der Daten an. Größe und Anzahl der Spalten werden sta
        ndardmäßig durch die Ansicht bestimmt.

    -Wrap [<SwitchParameter>]
        Zeigt den Text, der die Spaltenbreite überschreitet, in der nächsten Zeile an. Standardmäßig wird Text, der die
         Spaltenbreite überschreitet, abgeschnitten.


    regards Thomas Paetzold visit my blog on: http://sus42.wordpress.com
    Montag, 28. Februar 2011 11:09
  • Wenn ich format-table -wrap mache, schneited es die Inhalte nicht mehr ab, sondern setzt sie einfach auf eine neue Linie. Das ist für mich nicht akzeptabel, da ich für eine spätere Bearbeitung der Daten die Werte wieder zusammensetzen muss.

    Mir schwebt halt eine Ausgabe wie in der Bash-Shell vor: echo "${Pfad};${LastWrite};${LastAccess}"

    Da ist es denn egal, wie lange der String ist, er wird einfach auf eine Linie geschrieben.

    Montag, 28. Februar 2011 13:13
  • Was passirt bei Verwendung von -auto:$TRUE?

     

     


    regards Thomas Paetzold visit my blog on: http://sus42.wordpress.com
    Montag, 28. Februar 2011 13:31
  • Hier ist ein guter Artikel (in Englisch) zum Thema.

    Grüße, Denniver


    http://bytecookie.wordpress.com/
    • Als Antwort markiert nam.eless Mittwoch, 2. März 2011 08:39
    Montag, 28. Februar 2011 13:41
    Moderator
  • Hey super das funktioniert perfekt. Einfach
    Out-String -Width 4096
    

    anhängen und dann gehts wunderbar:)

     

    Danke vielmals für euchen Input.

    Gruss

    nameless

    Mittwoch, 2. März 2011 08:39