Я пытаюсь написать script, который будет просматривать набор папок и хранить только последние 10 файлов. Файлы в каждой папке могут создаваться ежедневно, еженедельно или ежемесячно. Мне нужно script сохранить 10 последних копий независимо от даты создания или измененной даты.
Используя другое сообщение, я создал ниже script, но он не хранит 10 копий, он держит любой файл, который не старше 10 дней.
$ftppath = "C:\Reports"
Get-ChildItem $ftppath -recurse *_Report_*.zip -force|where {$_.lastwritetime -lt (get-date).adddays(-10)} |Remove-Item -force
Любая идея о том, как я могу настроить эту работу? Если я использую script ниже, он работает, но только если я не установил -Recurse. Если вы используете переключатель -Recurse, вы получите ошибку, указанную ниже script.
# Keeps latest 10 files from a directory based on Creation Time
#Declaration variables
$path = "C:\Reports" # For example $path= C:\log\*.tmp
$total= (ls $path).count - 10 # Change number 5 to whatever number of objects you want to keep
# Script
ls $path |sort-object -Property {$_.CreationTime} | Select-Object -first $total | Remove-Item -force
Ошибка: Select-Object: не удается проверить аргумент в параметре "Первый". Аргумент -7 меньше минимально допустимого диапазона 0. Поставьте аргумент, который больше 0, а затем повторите попытку.