Как найти большие файлы на диске с помощью PowerShell

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

Например, чтобы вывести список 10 самых больших файлов на указанном диске, достаточно выполнить такую команду PowerShell:

Get-ChildItem -Path c:\ -Recurse –Force| sort -descending -property length | select -first 10 FullName, Length

Через некоторое время (в зависимости от размера диска и количества файлов), команда вернет список из 10 самых больших файлов, отсортированных в порядке уменьшения размера.

Get-ChildItem - поиск самых больших файлов на диске с помощью powershell

Для получения списка файлов в указанном каталоге используется командлет Get-ChildItem (или можно использовать один из псевдонимов/алиасов: ls , dir или gci ). В команде поиска больших файлов мы использовали следующие параметры:

  • -Path C:\ — путь к каталогу, с которого нужно начать поиск. Можно выполнить поиск файлов по всему диску или только в указанной папке (например, в профиле пользователя или сетевой папке). Если путь не указано, будет выполнен поиск в текущем каталоге. В параметре -Path через запятую можно указать сразу несколько папок или дисков в которых нужно выполнить поиск: -Path C:\,G:\,D:\IS0
  • -Recurse – опция указывает, что нужно выполнить рекурсивный поиск во всех вложенных подкаталогах. Можно ограничить проверку определенным уровнем вложенности с помощью параметра –Depth.
  • -Force – ключ позволяет выполнять поиск пои скрытым и системным папкам (файлам), которые по умолчанию игнорируются.
  • Sort -descending -property length – отсортировать файлы по убыванию размера (свойство length)
  • Select FullName, Length – вывести полный путь к файлу и его размер
  • -first 10 – вывести только первые 10 файлов
Совет. При доступе к некоторым каталогам даже с правами администратора, командлет может вернуть ошибку доступа:

Get-ChildItem : Отказано в доступе по пути "C:\Windows\CSC".
строка:1 знак:1
+ Get-ChildItem c:\ -r|sort -descending -property length | select -firs ...
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (C:\Windows\CSC:String) [Get-ChildItem], UnauthorizedAccessException
+ FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand

Чтобы подавить появление таких ошибок добавьте в команду Get-ChildItem параметр -ErrorAction SilentlyContinue.

Get-ChildItem Отказано в доступе по пути

По умолчанию, командлет Get-ChildItem выводит размер файла в байтах. Чтобы преобразовать их в гигабайты и добавить полный путь к каталогам, измените команду следующим образом:

Get-ChildItem c:\ -r -Force -ErrorAction SilentlyContinue |sort -descending -property length | select -first 10 name, DirectoryName, @{Name="GB";Expression={[Math]::round($_.length / 1GB, 2)}}

Вывести самые большие файлы на диске в ГБ - скрипт PowerShell

Полученный список больших файлов можно преобразовать в удобную графическую таблицу с помощью командлета Out-GridView:

Get-ChildItem c:\ -r -Force -ErrorAction SilentlyContinue |sort -descending -property length | select -first 10 name, DirectoryName, @{Name="GB";Expression={[Math]::round($_.length / 1GB, 2)}} | Out-GridView

Out-GridView - графическое представление таблицы со списком больших файлов

Найти на диске все файлы, больше 10 Гб и экспортировать список в CSV файл:

GCi C:\ -Recurse -Force -ErrorAction SilentlyContinue | where-object {$_.length -gt 10GB} | Sort-Object length | ft fullname,length| Export-Csv c:\pc\LargeFiles_Report.csv

Опции Include и Exclude позволяют включить или исключить из выборки определенные типы файлов. Например, чтобы исключить из вывода файлы с расширениями SYS и VMDK:

Get-ChildItem G:\ -Exclude "*.sys","*.vmdk" -Recurse -Force -ErrorAction SilentlyContinue| sort -descending -property length | select -first 10 FullName, Length

Для выборки файлов по определенному шаблону можно использовать опцию -Filter. Например, -Filter "*image*" . Команда с Filter отрабатывает гораздо быстрее, т.к. результаты фильтруются непосредственно при получении данных.

Можно найти большие файлы на удаленном компьютере. Для этого можно обратиться к сетевой папке по UNC пути (допустимо обращаться к стандартным административным шарам C$,D$,.., на удаленном компьютере):

Get-ChildItem -Path \\PC123\C$ -Recurse |where-object {$_.length -gt 10GB} |sort -descending -property length | select -first 10 FullName, Length

Или получить список топ больших файлов на нескольких компьютерах с помощью командлете Invoke-Command:

$ComputerList = @( "server1", "server2")
Invoke-Command -ComputerName $ComputerList -ScriptBlock {gci -Path C:\ -r| sort -descending -property length | select -first 10 name, length}


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


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

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

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

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