2009-07-31 4 views
1

Wie kann ich Powershell eine Datei IDENTICAL zu der Datei ausgeben, die von dem folgenden Befehl erzeugt wird? .Powershell 2.0 out-Datei Formatierung Albtraum

dir/s/b/a-d * *> C: \ files.txt

sollte einfach sein, nicht wahr !!

EDIT: gefunden I ps die Ausgabe auf dem Bildschirm Pufferbreite beruht Kürzen. Fix das mit Format-Tabelle und es puffs mit Leerzeichen ... versuchen Format-Liste und Sie erhalten Eigentum Überschriften ... Sie bekommen die Idee.

Antwort

1

Es gibt viele Möglichkeiten, Informationen in eine Datei zu schreiben. Einer ist Set-Content, der kein Breitenproblem hat. Wenn Sie ein FileInfo-Objekt in eine Zeichenfolge konvertieren, wird auch FullName zurückgegeben.

dir * -r | ?{!$_.PSIsCcontainer} | Set-Content C:\files.txt 

Der Grund, warum Sie ein Problem mit Out-File haben, ist, dass alle Out- * Cmdlets die automatische Formatierung Ansichten verwenden. Diese Ansichten werden mit Blick auf die Konsole erstellt.

2

Muss es genau sein? Warum? Wie das Sprichwort sagt, wenn Sie Zeichenfolgen in Powershell sind Parsen, tust du wahrscheinlich etwas falsch ... wie auch immer ...

1) Nur in cmd.exe nennen.

PS> cmd /c "dir /s /b /a-d *.* > c:\files.txt" 

2) Ich glaube, dass Sie die gleichen Ergebnisse von nativen Powershell erhalten können. Aber ich kann nicht den Zweck zu testen jede Kante Fall mit NTFS-Kreuzungen, versteckte Dateien usw.

PS> gci -r | ?{ !$_.psiscontainer } | %{ $_.fullname } | out-file c:\files.txt 

verantwortlich persönlich ich die Tatsache hassen können Sie nicht „wählen Sie“ verwenden, um die Eigenschaft Fullname ohne seltsame Nebenwirkungen abrufen auf nachgelagerten Cmdlets. Wenn die Zwecklosigkeit der foreach-Schleife Sie genauso sehr beschäftigt wie mich, verwenden Sie Get-PropertyValue von PSCX oder Linq-Select von Josh Einstein.

+0

Ja, es musste genau sein, da es in ein anderes Werkzeug eingegeben wurde. out-file schneidet die Bildschirmpufferbreite ab –

+0

Interessant. Hat die native> Umleitung das gleiche Problem? –