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

Повечето потребители на Windows са свикнали, че най-лесният начин да получат размера на дадена папка е да отворите нейните свойства в Windows Explorer. По-опитните предпочитат да използват помощни програми като TreeSize или WinDirStat. Но ако трябва да получите по-подробна статистика за размера на папките в определена директория или да изключите някои видове файлове, в този случай е по-добре да използвате функциите на PowerShell. В тази статия ще покажем как бързо да получите размера на конкретна директория на диск (или всички поддиректории) с помощта на PowerShell.

съвет. Можете също да използвате помощната програма конзола du.exe, за да получите размера на конкретна папка на диска..

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

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

съвет. В една от предишните ни статии показахме как да използвате командлета Get-ChildItem, за да намерите ТОП-големите файлове на диска..

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

Get-ChildItem c: \ iso | Мярка-обект -Дължина на свойството -сум

Както можете да видите, общият размер на файловете в тази директория е посочен в полето Sum и е около 2 GB (размерът е в байтове).

За да преобразувате размера в по-удобни MB или GB, използвайте следната команда:

(gci c: \ iso | мярка дължина -s) .sum / 1Gb

или:

(gci c: \ iso | мярка дължина -s) .sum / 1Mb

За да закръгляте резултата до два десетични знака, изпълнете командата:

"0: N2 GB" -f ((gci c: \ iso | мярка дължина -s) .sum / 1Gb)

За да изчислим общия размер на всички файлове от определен тип в директория, използваме следната команда (например, искаме да получим общия размер на ISO файловете в папка):

(gci c: \ iso * .iso | мярка дължина -s) .sum / 1Mb

Горните команди ви позволяват да получите само общия размер на файла в указаната директория. Ако папката съдържа поддиректории, размерът на файловете в тези директории няма да бъде взет под внимание. За да получите общия размер на всички файлове в директория, като вземете предвид поддиректорите, трябва да използвате параметъра -RECURSE. Вземете общия размер на всички файлове в папката c: \ Windows.

"0: N2 GB" -f ((gci -force c: \ Windows -Recurse -ErrorAction SilentlyContinue | измери дължина -s) .sum / 1Gb)

За да взема предвид размера на скритите и системните файлове, допълнително посочих аргумент -сила.

И така, размерът на директорията C: \ Windows на нашия диск е около 16 GB.

съвет. За да не показвате грешки в достъпа до директория, използвайте параметъра -ErrorAction SilentlyContinue.

Можете да получите размера на всички подпапки от първо ниво в указаната директория. Например, трябва да получим размера на всички потребителски профили в папката C: \ users.

gci -force 'C: \ Users'-ErrorAction SilentlyContinue | ? $ _ -ие [io.directoryinfo] | %
$ len = 0
gci -recurse -force $ _. fullname -ErrorAction SilentlyContinue | % $ len + = $ _. дължина
$ _. пълно име, '0: N2 GB' -f ($ len / 1Gb)

% - това е псевдоним на цикъла foreach-обект.

Давай напред. Да кажем, че вашата задача е да откриете размера на всяка директория в корена на системния твърд диск и да представите информацията в таблична форма, удобна за анализ, с възможност за сортиране по размер на директории. За целта използвайте командлета Out-GridView.

За информация относно размера на директории на C: \ устройството, изпълнете следния скрипт PowerShell:

$ targetfolder = 'C: \'
$ dataColl = @ ()
gci -force $ targetfolder -ErrorAction SilentlyContinue | ? $ _ -ие [io.directoryinfo] | %
$ len = 0
gci -recurse -force $ _. fullname -ErrorAction SilentlyContinue | % $ len + = $ _. дължина
$ име на папка = $ _. пълно име
$ foldersize = '0: N2' -f ($ len / 1Gb)
$ dataObject = Нов обект PSObject
Add-Member -inputObject $ dataObject -memberType NoteProperty -name „име на папка“ -value $ име на папка
Add-Member -inputObject $ dataObject -memberType NoteProperty -име „foldersizeGb“ -value $ foldersize
$ dataColl + = $ dataObject

$ dataColl | Out-GridView -Title „Размер на поддиректория“

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