Как узнать размер папок на диске с помощью PowerShell

Большинство пользователей Windows привыкли, что самый простой способ получить размер папки – открыть ее свойства в Проводнике Windows. Более опытные предпочитают использовать такие утилиты, как TreeSize или WinDirStat. Но, если вам нужно получить более детальную статистику по размеру папок в конкретном каталоге, или исключить определенные типы файлы, в этом случае лучше воспользоваться возможностями PowerShell. В этой статье мы покажем, как быстро получить размер определенного каталога на диске (или всех вложенных каталогов) с помощью PowerShell.

Совет. Для получения размера конкретной папки на диске также можно воспользоваться консольной утилитой du.exe.

Для получения размеров файлов и каталогов в PowerShell можно воспользоваться командами Get-ChildItem (алиас gci) и Measure-Object (алиас measure).

Первый командлет позволяет по указанным критериями сформировать список файлов в заданном каталоге, а второй выполняет арифметическое действие.

Совет. В одной из прошлых статей мы показывали как использовать командлет Get-ChildItem чтобы найти ТОП самых больших файлов на диске.

Например, чтобы получить размер папки c:\ps, выполните команду:

Get-ChildItem c:\iso | Measure-Object -Property Length -sum

как узнать размер каталога с помощью PowerShell

Как вы видите, общий размер файлов в данном каталоге указан в поле Sum и составляет около 2 Гб (размер указан в байтах).

Чтобы преобразовать размер в более удобные Мб или Гб, используйте такую команду:

(gci c:\iso | measure Length -s).sum / 1Gb

Или:

(gci c:\iso | measure Length -s).sum / 1Mb

Для округлений результата до двух символов после запятой, выполните команду:

"{0:N2} GB" -f ((gci c:\iso | measure Length -s).sum / 1Gb)

получить размер фалой в каталоге

Чтобы посчитать суммарный размер всех файлов определенного типа в каталоге используйте такую команду (к примеру, мы хотим получить общий размер ISO файлов в папке):

(gci c:\iso *.iso | measure Length -s).sum / 1Mb

посчитать размер всех iso файлов на диске

Указанные выше команды позволяют получить только суммарный размер файлов в указанной директории. Если в папке содержаться вложенные каталоги, размер файлов в этих каталогах не будет учтен. Для получения общего размера всех файлов в каталоге с учетом вложенных директорий нужно использовать параметр –Recurse. Получим суммарный размер всех файлов в папке c:\Windows.

"{0:N2} GB" -f ((gci –force c:\Windows –Recurse -ErrorAction SilentlyContinue| measure Length -s).sum / 1Gb)

Чтобы учитывать размер скрытых и системных файлов я дополнительно указал аргумент –force.

Итак, размер каталога C:\Windows на нашем диске составляет около 16 Гб.

Совет. Чтобы не показывать ошибки доступа к каталогам используйте параметр -ErrorAction SilentlyContinue.

расчет размера, который занимает каталог Windows с помощью Powershell

Можно получить размер всех вложенных папок первого уровня в указанном каталоге. Например, нам нужно получить размер всех профилей пользователей в папке C:\users.

gci -force 'C:\Users'-ErrorAction SilentlyContinue | ? { $_ -is [io.directoryinfo] } | % {
$len = 0
gci -recurse -force $_.fullname -ErrorAction SilentlyContinue | % { $len += $_.length }
$_.fullname, '{0:N2} GB' -f ($len / 1Gb)
}

подсчитать размер профилей пользователей

% — это алиас для цикла foreach-object.

Идем дальше. Допустим ваша задача – узнать размер каждого каталога в корне системного жесткого диска и представить информацию в удобной для анализа табличной форме с возможностью сортировки по размеру каталогов. Для этого воспользуемся командлетом Out-GridView.

Для получения информации о размере каталогов на диске C:\ выполните следующий PowerShell скрипт:

$targetfolder='C:\'
$dataColl = @()
gci -force $targetfolder -ErrorAction SilentlyContinue | ? { $_ -is [io.directoryinfo] } | % {
$len = 0
gci -recurse -force $_.fullname -ErrorAction SilentlyContinue | % { $len += $_.length }
$foldername = $_.fullname
$foldersize= '{0:N2}' -f ($len / 1Gb)
$dataObject = New-Object PSObject
Add-Member -inputObject $dataObject -memberType NoteProperty -name “foldername” -value $foldername
Add-Member -inputObject $dataObject -memberType NoteProperty -name “foldersizeGb” -value $foldersize
$dataColl += $dataObject
}
$dataColl | Out-GridView -Title “Размер вложенных каталогов”

получить размер всех папок в корне диска C: с помощью powershell

Как вы видите перед вами должно появиться графическое представление таблицы, в которой указаны все папки в корне системного диска C:\ и их размер. Щелкнув по заголовку столбца таблицы, вы можете отсортировать папки по размеру.


Предыдущая статья Следующая статья


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

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)