Powershell Dateilistenabfrage beschleunigen
Hallo,
ich habe 50000 Testdateien in einem Ordner und wollte die in eine Textdatei mit der Dateigröße ausgeben.
Das Funktioniert auch, nur geht es mir zu langsam..
Dauer: 52s
Dauer: 59s
Das der zweite Befehl langsamer ist, hat mich überrascht. Hat jemand eine bessere Lösung?
Danke.
ich habe 50000 Testdateien in einem Ordner und wollte die in eine Textdatei mit der Dateigröße ausgeben.
Das Funktioniert auch, nur geht es mir zu langsam..
1
2
3
2
3
measure-command{@([System.IO.Directory]::GetFiles("C:\test\files","*","AllDirectories")) |
Foreach-Object{(Get-Item $_ |Select -ExpandProperty fullname) + "," + (Get-Item $_ |Select -ExpandProperty length)} |
Out-File -FilePath C:\test\result.txt}
1
2
3
4
2
3
4
measure-command{(Get-ChildItem C:\test\files -Recurse)| %{
$_.Fullname + "," + $_.length | Out-File -FilePath C:\test\result2.txt
}
}
Das der zweite Befehl langsamer ist, hat mich überrascht. Hat jemand eine bessere Lösung?
Danke.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 293649
Url: https://administrator.de/forum/powershell-dateilistenabfrage-beschleunigen-293649.html
Ausgedruckt am: 13.04.2025 um 23:04 Uhr
3 Kommentare
Neuester Kommentar
Ay,
ob es hilft, weiß ich nicht - aber zu deiner Variante 1 hier ein paar Anmerkungen:
http://www.admin-source.de/BlogDeu/905/powershell-foreach-und-foreach-o ...
Gruß
Ankh
ob es hilft, weiß ich nicht - aber zu deiner Variante 1 hier ein paar Anmerkungen:
http://www.admin-source.de/BlogDeu/905/powershell-foreach-und-foreach-o ...
Gruß
Ankh

Hiermit braucht es im Test nur knapp 10 Sekunden bei 50.000 Dateien (in VM mit vhd auf einer SSD):
Das ist effizienter als innerhalb der Schleife jedes mal den Output erneut wegzuschreiben.
Gruß jodel32
1
gci c:\test\files -recurse | %{"$($_.Fullname) - $($_.Length)"} | set-content 'C:\test\result.txt'
Gruß jodel32