Повечето потребители на 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: \ и техния размер. Като кликнете върху заглавието на колоната на таблицата, можете да сортирате папките по размер.