Подсчет и измерение содержимого папок
Попытка проверки скриптов на наличие больших папок в структуре каталогов.
Кажется, что мой тестовый скрипт точно работает только для папки верхнего уровня и только с двумя отдельными командами Get-ChildItem, одна для подсчета, а другая сумма.
$profiles = Get-ChildItem "C:\Users"
ForEach ($user in $profiles) {
<# getting the total number of items in the folder first #>
$itemsInfo1 = Get-ChildItem "C:\Users\$user" -Recurse -Force -ErrorAction SilentlyContinue
$allitemsCount = $itemsInfo1.Count
<# getting the total size of all items in the folder second #>
$itemsInfo2 = Get-ChildItem "C:\Users\$user" -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum -ErrorAction SilentlyContinue
$allitemsSize = $itemsInfo2.Sum
$itemsSizeMB = [System.Math]::Round((($allitemsSize)/1MB),2)
$itemsSizeGB = [System.Math]::Round((($allitemsSize)/1GB),2)
Write-Host $user,$allitemsCount" Items",$itemsSizeMB" MB", $itemsSizeGB" GB"
Я хотел просмотретьэтот скрипт в любой папке простым ручным перезаписыванием пути в переменных $ profile и $ itemsInfo.
Однако изменение соответствующих путей на одну подпапку нижнего уровня (например, $ profile = C: \ Users \ John) для просмотра списка подпапок оттуда возвращает размеры суммы как 0, счетчик работает нормально.
Также, вопреки моим ожиданиям, сценарий возвращает правильные значения только тогда, когда я использую две отдельные команды Get-ChildItem, так как свойства .Sum и .Count, возвращаемые двумя Get-ChildItem, различаются.
Первый метод Get-ChildItem (т. Е. $ ItemsInfo1), похоже, возвращает правильное количество элементов в папке, но неверную сумму размеров. Второй метод Get-ChildItem (т. Е. $ ItemsInfo2), похоже, возвращает неправильное количество элементов (только количество файлов, а не папок?) В папке, но правильную (er) сумму размеров.
Я использовал GUI> свойства папкиустановить, каким должен быть «правильный» счет и размер.