2017-05-12 1 views
0

Ich benutze PowerShell, um durch ein Verzeichnis zu navigieren und den aktuellen Dateipfad aufzuzeichnen, wenn ich eine Datei erreiche, die bestimmte Kriterien erfüllt. In meinem Beispiel ist es eine Datei, die mit 2 beginnt und hat zwei Ziffern hinter ihm:Das Start-Transcript von PowerShell kompakter machen

Start-Transcript -path C:\test.txt 
Get-ChildItem -recurse | Where-Object {$_.Name -match "2\d\d"} 
Stop-Transcript 

Vor dem Powershell Schalt wurde ich nur über die Befehlszeile,

dir *2??*.doc /b /s /A:-D > C:\test.txt

Welche aufhob ein Haufen Sachen, die ich nicht wollte. Allerdings war der Vorteil dieses Befehls, dass meine Textdatei war kompakt, mit dem gesamten Dateipfad jeder Datei in einer Zeile:

C:\folder1\234.doc 
C:\folder1\folder2\235.doc 

Die Transkript Funktion in Powershell ist weit größer:

Start time: 20170512141758 
... 
********************** 
Transcript started, output file is C:\test.txt 


    Directory: C:\folder1 


Mode    LastWriteTime   Length Name 
----    -------------   ------ ---- 
-a----  12-May-17  14:07    0 234.doc 


    Directory: C:\folder1\folder2 


Mode    LastWriteTime   Length Name 
----    -------------   ------ ---- 
-a----  12-May-17  14:05    0 235.doc 
********************** 
Windows PowerShell transcript end 
End time: 20170512141758 
********************** 

Wie kann ich mein PowerShell-Transkript so kompakt wie das Befehlszeilentranskript machen?

Antwort

2

Rohr du bist Ausgang direkt an Out-File statt Start-Transcript die Verwendung:

Get-ChildItem -Recurse | Where-Object {$_.Name -match "2\d\d"} |Select -Expand FullName |Out-File C:\test.txt 

Die Select (alias für Select-Object) Befehl nach Where-Object stellt sicher, nur wir den vollständigen Dateipfad in der Ausgabedatei

erhalten
+0

Wow, danke für die blitzschnelle Antwort! Was macht der Parameter -Expand? – gsamerica

+0

Get-Help Select-Objekt -Full – lit

Verwandte Themen