Наконец я получил это.Ошибка возникает, когда в одной папке нет файла, даже если в нем есть непустые папки.Решение, опубликованное EBGreen, является неполным, поскольку учитывает только вложенные файлы.
Правильный сценарий:
$folder = $args[0]
[console]::WriteLine($folder)
$startFolder = $folder
#here we need the size of all subfiles and subfolders. Notice the -Recurse
$colItems = (Get-ChildItem $startFolder -Recurse | Measure-Object -property length -sum)
"$startFolder -- " + "{0:N2}" -f ($colItems.sum / 1MB) + " MB"
"------"
#here we take only the first level subfolders. Notice the Where-Object clause and NO -Recurse
$colItems = (Get-ChildItem $startFolder | Where-Object {$_.PSIsContainer -eq $True} | Sort-Object)
foreach ($i in $colItems)
{
$i.FullName
#here we need again the size of all subfiles and subfolders, notice the -Recurse
$subFolderItems = (Get-ChildItem $i.FullName -Recurse | Measure-Object -property length -sum)
" -- " + "{0:N2}" -f ($subFolderItems.sum / 1MB) + " MB"
}
Теперь ошибки нет, а значения точные.