Benutzer mit den meisten Antworten
"format-table" schneidet Tabelleninhalte ab

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
- Bearbeitet Denniver ReiningMVP, Moderator Montag, 28. Februar 2011 13:44 Titel angepasst
Antworten
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 -
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.