@IseeCollapse

Как удалить 10 по давности файл через powershell?

Всем доброго времени суток, я жуткий чайник в powershell скриптах, но стоит задача автоматизации бекапов. Встрял на таком моменте, мне нужно хранить 10 последних файлов каждой базы, если вдруг в какой-то день бекап не сделался в один из дней, то баз при очистке все равно должно остаться 10 (очистка по маске даты или просто по дате не подходит). Реализовывать это через цикл со счётчиком? Или есть ещё какие-то варианты? Если через счетчик, то как определить самый последний файл?
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
@BeatHazard
Добрый день.
То, что вам нужно можно сделать таким скриптом:
$files = Get-ChildItem -File -Path C:\temp | Sort-Object LastWriteTime
$count = $files.Count - 10
if ($count -gt 0)
    {
    $files | Select-Object -First $count | Remove-Item
    }

Но прежде чем применять его, проведите тестирование, что он удовлетворяет вашим требованиям
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@MaxKozlov Куратор тега PowerShell
Вы забыли сказать, как именно берёте эти свои файлы
Если просто листинг папки, то после Get-ChildItem его можно отсортировать через Sort-Object -Descending -Property LastWriteTime
А потом, пропустив первые 10 (Select-Object -Skip 10), поудалять остальные

Собрать это всё в однострочник....
Ответ написан
@Gynaecologist
$oldbaks = Get-ChildItem -path "\\путь к\папке с бэкапами"|Sort-Object LastWriteTime -Descending|Select-Object -Skip 10
foreach ($oldbak in $oldbaks) {Remove-Item $oldbak.FullName -Force}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы