Вопрос о ходе выполнения Powershell Get-ChildItem

Итак, у меня есть набор каталогов 00-99 в папку. Каждый из этих каталогов имеет 100 подкаталогов, 00-99. Каждый из этих подкаталогов содержит тысячи изображений.

то, что я пытаюсь сделать, это в основном получить отчет о ходе работы, пока он вычисляет средний размер файла, но я не могу заставить это работать. Вот мой текущий запрос:

get-childitem <MyPath> -recurse -filter *.jpeg | Where-Object { Write-Progress "Examining File $($_.Fullname)" true } | measure-object -Property length -Average

Это показывает мне панель, которая обновляется по мере обработки каждого из файлов, но в конце я не получаю среднего размера файла данные. Очевидно, я делаю что-то неправильно, потому что я считаю, что попытка взломать Where-Object для печати заявления о прогрессе, вероятно, плохая идея(tm).

поскольку есть миллионы и миллионы изображений, этот запрос, очевидно, занимает очень много времени для работы. get-childitem в значительной степени будет основной частью времени запроса, если я правильно понимаю вещи. Есть указания, как получить то, что я хочу? АКА, мой результат идеально был бы:

Starting...
Examining File: Sample.jpeg
Examining File: Sample2.jpeg
Examining File: Sample3.jpeg
Examining File: Sample4.jpeg
...
Examining File: Sample9999.jpg
Average File Size: 12345678.244567

Edit: я могу сделать простой вариант из:

get-childitem <MyPath> -recurse -filter *.jpeg | measure-object -Property length -Average

а затем просто уйти от моей рабочей станции на полтора дня или что-то еще, но это кажется немного неэффективным =/

2 ответов


что-то вроде этого?

get-childitem -recurse -filter *.exe | 
      %{Write-Host Examining file: $_.fullname; $_} | 
      measure-object -Property length -Average

немного более подробный прогресс:

$images = get-childitem  -recurse -filter *.jpeg

$images | % -begin { $i=0 } `
-process {  write-progress -activity "Computing average..." -status "Examining File: $image.fullpath ($i of $($images.count))" -percentcomplete ($i/$images.count*100); $i+=1 } `
-end { write-output "Average file size is: $($images | measure-object -Property length -Average)" }