2009-06-24 13 views
2

Ich habe ein kleines Problem mit der Steuerung der Ausgabe in PS. Hier ist die Codezeile in Frage;Powershell-Ausgabe

$result|sort-object cn | format-table -wrap -autosize 

Wenn ich

| out-file $logfile 

die letzte Spalte meiner Ausgabe anhängen wird abgeschnitten. Jetzt weiß ich, dass meine Ausgabe in Ordnung ist, wenn ich die Breite meiner Konsolensitzung ändere und das Skript erneut ausführe, aber es muss einen besseren Weg geben, dies zu tun? Ich habe auch versucht, add-content zu verwenden, aber ich denke, dass ich etwas vermissen muss, da der Ausdruck nicht richtig ausgewertet wird und ich nur eine Reihe von Verweisen auf System-Objekt in meiner Log-Datei bekomme.

+0

Sie könnten versuchen, serverfault.com – AgileJon

+0

ich denke, es hier gehört, da es offensichtlich ein Algorithmus falsch anstelle eines Problems Server-Management gegangen. – Joey

Antwort

4

Sie können den Parameter -width für das Out-File-Cmdlet verwenden. Sie könnten out-file -width 500 ausprobieren, damit nichts abgeschnitten wird.

1

Der beste Weg, die ich bisher festgestellt habe, ist Out-String zu verwenden, um mit einem -Width länger, als Sie die gesamte Linie erwarten zu sein: wird

$result | Format-Table -Autosize | Out-String -Width 4096 

Das einzige Problem mit der oben ist, dass es Pad die gesamte Zeile mit Leerzeichen. Um zu umgehen, dass, fügen Sie den -Stream Schalter und .Trim() jede Zeile:

$result | Format-Table -Autosize | Out-String -Width 4096 -Stream | %{ $_.Trim() } 

Dies gilt auch für Rohrleitungen, die Ergebnisse in die Zwischenablage mit Clip.exe schön ist (wenn ich nicht über die PSCX Modul mit dem Out-Zwischenablage Befehl installiert ist):

$result | Format-Table -Autosize | Out-String -Width 4096 -Stream | %{ $_.Trim() } | clip.exe