Удаление файлов старше n дней powershell

Для того, что бы через powershell удалить файлы старше даты сначала нужно установить дату, которая нам нужна:

Можно дату задать несколькими днями назад. Это удобно для скриптов, которые будут все время висеть в планировщике:

Навигация по статье

На моем примере дата получится в таком формате:

Т.к. я не установил минуты и секунды – они взялись по умолчанию из текущего дня. Если мы не установим год, например, то он будет текущим 2019.

Получение списка файлов для последующего удаления в Powershell

Далее нам нужно использовать Get-Childitem для того что бы получить все файлы:

  • Path – путь до директории
  • Include – включает, в моем случае, все файлы которые кончаются на txt
  • Recurse – поиск файлов не только в текущей папке, но и в подпапках.

У файла есть несколько свойств c датами (datetime). Все их увидеть можно так:

  • CreationTime
  • CreationTimeUtc
  • LastAccessTime
  • LastAccessTimeUtc
  • LastWriteTime
  • LastWriteTimeUtc

UTC значит, что дата будет в формате всемирного времени.

Удаление через powershell файлов старше даты

Меня интересует удаление файлов по дате создания. Для этого сделаем так:

Т.е. для каждого файла где свойство CreationDate (дата создания файла) LessThen (больше чем) дата в переменной произвести удаление. Таким образом мы удалили в powershell файлы старше определенной даты. Мы можем использовать и другие операторы сравнения:

  • lt – меньше
  • le – меньше или равно
  • gt – больше
  • ge – больше или равно
  • ne – не равно

С рекурсивным обходом папок

Читайте также:  Транзистор s8050 чем заменить

Powershell удаление файлов старше n дней : 1 комментарий

gci ‘E:IIS Logs’ -Directory | gci -Include ‘*.log’,’*.blg’ -Recurse | ? LastWriteTime -lt (Get-Date).AddDays(-30) | Remove-Item

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Если внутри корпоративной сети используются всевозможные сетевые ресурсы доступные множеству пользователей и выполняющие функции файлообменников, например сетевые папки или каталоги FTP серверов, то иногда может возникнуть необходимость в обслуживании таких ресурсов, например периодического удаления файлов и подкаталогов имеющих определённый срок давности. Хочу поделиться маленьким примером когда-то найденного (уже не вспомню где) PowerShell скрипта, который решает у меня такую задачу

Другим примером применения такого скрипта может стать необходимость периодической очистки каких либо текстовых лог-файлов.

Если например присутствует дополнительное условие, при котором нельзя удалять вложенные каталоги можно заменить строчку…

Если на файловом сервере несколько каталогов которые нужно обслуживать на предмет удаления старых данных и при этом условия удаления различаются, то можно создать единый командный файл который будет запускаться в последствии из Планировщика задач. Пример содержимого такого командного файла

В описании к скрипту я так же нашёл информацию о том что можно производить вызов скрипта с передачей параметров, например так:

но если честно, такой тип вызова я не использую и даже не проверял.

Созданный командный файл располагаем в каталоге с скриптами и выполняем уже непосредственное его вызов из Планировщика задач по нужному нам расписанию

Оцените статью
Добавить комментарий

Adblock detector