Получаем размер каталогов при помощи PowerShell

Получить список все каталогов с указанием их размера средствами PowerShell можно при помощи такой функции:

function Get-FolderSize($Path=$home) {
  $code = { ('{0:0.0} MB' -f ($this/1MB)) }
  Get-ChildItem -Path $Path |
    Where-Object { $_.Length -eq $null } |
    ForEach-Object {
      Write-Progress -Activity 'Calculating Total Size for:' -Status $_.FullName
      $sum = Get-ChildItem $_.FullName -Recurse -ErrorAction SilentlyContinue |
        Measure-Object -Property Length -Sum -ErrorAction SilentlyContinue
      $bytes = $sum.Sum
      if ($bytes -eq $null) { $bytes = 0   }
      $result = 1 | Select-Object -Property Path, TotalSize
      $result.Path = $_.FullName
      $result.TotalSize = $bytes | 
        Add-Member -MemberType ScriptMethod -Name toString -Value $code -Force -PassThru    
      $result
    }
}

Результат:

PS> Get-FolderSize $env:windir
 
Path                                                                  TotalSize
----                                                                  ---------
C:\Windows\AppPatch                                                     12,1 MB
C:\Windows\assembly                                                   1772,1 MB
C:\Windows\Boot                                                         31,7 MB
(...)
Теги:

Понравилась статья? Оставьте комментарий или подпишитесь на RSS рассылку.

Комментарии

Надо добавить ещё -Force в двух местах.
Иначе не считает скрытые папки ☺

размер директории в Mb Support Tools
diruse /M %windir%
размеры поддиректорий и директории
diruse /K /S %windir%
diruse /S %windir%
diruse /, %windir%
размеры поддиректорий и директории с глубиной в 1 поддиректорию Sysinternals Suite Utilities
du.exe -l 1 %windir%

Оставить комментарий

(required)

(required)