Когато системата ви уведоми, че на диска няма място, първото, което прави администраторът, е да се опита да намери всички големи файлове, които заемат най-много място. Можете да използвате Windows Explorer за търсене на големи файлове (има няколко предварително зададени шаблона за търсене по размер), любимия ви файлов мениджър или помощни програми на трети страни. Всички тези инструменти обаче, за разлика от PowerShell, изискват инсталация на компютър. Нека да разгледаме пример за бързо намиране на големи файлове на диск с помощта на PowerShell.
За да получите списък с файлове в конкретна директория (включително подпапки) и техните размери, можете да използвате командлета Get-ChildItem. Cmdlet може да търси файлове на целия диск или в определена папка (например в потребителски профили или всякакви други папки).
Избройте 10-те най-големи файла на C: \:
Get-ChildItem c: \ -r | сортиране-намаляващ-дължина на свойството | изберете -първо 10 име, дължина
В зависимост от размера на диска и броя на файловете на него, командата може да отнеме известно време.
ключ -R (Recurse) показва, че е необходимо рекурсивно да се преминава през всички вложени обекти (директории). Можете да ограничите проверката до определено ниво на влагане, като използвате параметъра -дълбочина.Ако не посочите път, търсенето ще се извърши във всички поддиректории в текущата директория.
Както можете да видите, получихме списък с десетте най-големи файла на диска, подредени в реда на намаляване на размера на файла.
съвет. Когато осъществява достъп до някои директории дори с права на администратор, командлетът може да върне грешка в достъпа:Get-ChildItem: Достъпът е отказан по път "C: \ Windows \ CSC".
ред: 1 знак: 1
+ Get-ChildItem c: \ -r | sort -descending -project length | изберете -първи ...
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: PermissionDenied: (C: \ Windows \ CSC: String) [Get-ChildItem], UnauthorizedAccessException
+ FullyQualifiedErrorId: DirUnauthorizedAccessError, Microsoft.PowerShell.Commands.GetChildItemCommand
За да потиснете появата на такива грешки, използвайте параметъра -ErrorAction SilentlyContinue.
Както можете да видите, размерът на файла се показва в байтове. За удобство те могат да бъдат преобразувани в мегабайти. Освен това можете да покажете директорията, в която се съхранява намереният файл:
Get-ChildItem c: \ -r -ErrorAction SilentlyContinue | сортиране-намаляващ-дължина на свойството | изберете -първо 10 име, DirectoryName, @ Name = "Mb"; Израз = [Math] :: round ($ _. length / 1MB, 2)
Полученият етикет може да бъде преобразуван в удобна графична форма с помощта на командлета Out-GridView:
Get-ChildItem c: \ -r | sort -descending -project length | изберете -първо 10 име, DirectoryName, @ Name = "Mb"; Израз = [Math] :: кръг ($ _. дължина / 1MB, 2) | Out-GridView
По същия начин можете да намерите всички файлове, които са по-големи от определена стойност, например 200 MB):
$ размер = 200 * 1024 * 1024
GCi C: \ -recurse -ErrorAction SilentlyContinue | където-обект $ _. дължина -gt $ размер | Сортиране-Дължина на обекта | ft пълно име
Списъкът с файлове може да бъде качен във CSV файл по този начин:
GCi C: \ -рекурс | където-обект $ _. дължина -gt $ размер | Сортиране-Дължина на обекта | ft пълно име | Export-Csv c: \ pc \ LargeFiles_Report.csv
Ако трябва да изчислите размера на всички файлове в директория, използвайте статията: Как да определите размера на директория с помощта на PowerShell.