Powershell – вычисляем размер поддиректорий


Update: сделан командлет и опубликован в Gallery Measure-SubDirSize — measure sizes of subdirectories

При анализе индексации файловых шар (Sharepoint — мусор на файловой шаре) возникла частная задача: есть папки на диске или шары подразделений; для каждого подразделения требуется оценить количество файлов заданного типа и их общий размер.

Фактически нужно взять путь в ресурсу и для каждой поддиректории вычислить число и размер файлов заданных маской. При этом нам не нужна информация о поддиректориях ниже первого уровня. Иначе говоря, простая рекурсия не подходит. Современные версии Powershell (выше 3.0) позволяют решить задачу в команду при использовании pipeline variable.

С учётом предыдущего опыта по оптимизации скриптов на Powershell (Powershell – средства оптимизации скрипта) получился такой скрипт решающий нашу задачу:


$res=dir -Directory \\server\share  -pv pvDir |
    % {dir -Recurse -Path ($_.FullName) -Filter "*.xls"  | Measure-Object -Property Length -Sum } |
    % { [pscustomobject] @{ Name=$pvDir.Name; Count = $_.Count ; Sum = $_.Sum } }

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: