Как стать автором
Обновить

Автоматическое удаление файлов и папок старше N дней

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров2.6K

Одной из наверное классических задач системного администратора является организация общей шары (файлопомойки), для оперативного обмена данными между сотрудниками.

Одной из проблем является то что этот "Обменник" превращается в инструмент долговременного хранения файлов, что недопустимо. посему всем сотрудникам сообщаем, что данные будут регулярно удаляться через N дней после их размещения на шаре.

А сами вооружаемся powershell и task scheduler, создаем скрипт со следующим содержимым и в планировщике ставим его на ежедневное исполнение

#Дата с которой сравнивать. В этом случае -15 дней от текущей даты
$date = (Get-Date).AddDays(-15)
#Путь до директории откуда удалять файлы
$path = "d:\data\public"
#Расположение отчетов 
$report = "C:\scripts\Result\file_list.txt"

#Работаем с файлами
#Вывод спписка всех файлов без  папок (в т.ч. внутри папок) старше чем значение в $date
$filelist = Get-ChildItem -Recurse -Path $path -file | Where-Object -Property CreationTime -lT $date  
$filelist  | Sort-Object -Property CreationTime | ft CreationTime ,VersionInfo | tee $report
#Удаляем файлы
#$filelist | Remove-Item 

#Работаем с каталогами
#вывод списка пустых директорий(где нет ни файлов ни директорий) старше чем дата $date 
$folderlist =  Get-ChildItem -Recurse -Path $path -Directory | Where-Object -Property LastWriteTime -lT $date | where { $_.psiscontainer -eq $true -and $_.GetFiles().count -eq 0 -and $_.GetDirectories().count -eq 0 } 
#вывод списка пустых директорий (где нет файлов, но есть директории)  старше чем дата $date 
#$folderlist =  Get-ChildItem -Recurse -Path $path -Directory | Where-Object -Property LastWriteTime -lT $date | where { $_.psiscontainer -eq $true -and $_.GetFiles().count -eq 0 } 
$folderlist | Sort-Object -Property LastWriteTime | ft LastWriteTime ,FullName | tee $report -Append
#Удаляем каталоги
#$folderlist | Remove-Item

P.s чукча не писатель и не великий кодер, пишу как умею

Ссылка на гит https://github.com/fiverok/psscripts/blob/main/Del_old_files.ps1

Теги:
Хабы:
Всего голосов 6: ↑2 и ↓4+2
Комментарии12

Публикации

Истории

Работа

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань