👋 Привет, админы!
Сегодня разберем, как найти дубликаты файлов на сервере или рабочей машине с помощью PowerShell. Это актуально, если диск забивается ненужными копиями данных, а порядок в файловой системе – это всегда плюс.
🔍 Поиск дубликатов по хэшу
Чтобы найти файлы с одинаковым содержимым, можно использовать хеширование. Вот готовый скрипт:
$path = "C:\Your\Directory" # Укажите свою папку
$files = Get-ChildItem -Path $path -Recurse -File |
Where-Object { $_.Length -gt 0 } | # Исключаем пустые файлы
ForEach-Object {
[PSCustomObject]@{
Path = $_.FullName
Hash = (Get-FileHash $_.FullName -Algorithm SHA256).Hash
}
}
$duplicates = $files | Group-Object -Property Hash | Where-Object { $_.Count -gt 1 }
# Вывод дубликатов
$duplicates | ForEach-Object {
$_.Group | Select-Object -ExpandProperty Path
Write-Host "----------------------"
}Этот скрипт:
✅ Сканирует указанную папку и подкаталоги
✅ Вычисляет хеш-суммы (SHA-256) для всех файлов
✅ Группирует файлы с одинаковыми хешами
✅ Выводит список дубликатов
❌ Удаление дубликатов (ОСТОРОЖНО!)
Если нужно удалить все копии, кроме одной, можно добавить:
$duplicates | ForEach-Object {
$_.Group | Select-Object -Skip 1 | Remove-Item -Force
}⚠️ Будьте осторожны – скрипт удаляет файлы без предупреждения!
💬 А какие утилиты или скрипты вы используете для поиска дубликатов? Делитесь в комментах!
👉 @win_sysadmin