Я пытаюсь написать скрипт, который будет просматривать набор папок и хранить только последние 10 файлов. Файлы в каждой папке могут создаваться ежедневно, еженедельно или ежемесячно. Мне нужен скрипт, чтобы сохранить 10 самых последних копий независимо от даты создания или даты изменения.
Используя другой пост, я создал приведенный ниже скрипт, который работает, но он не хранит 10 копий, он хранит любой файл, который не старше 10 дней.
$ftppath = "C:\Reports"
Get-ChildItem $ftppath -recurse *_Report_*.zip -force|where {$_.lastwritetime -lt (get-date).adddays(-10)} |Remove-Item -force
Есть идеи о том, как я могу настроить это на работу? Если я использую приведенный ниже скрипт, он будет работать, но только если я не установлю -Recurse. Если вы используете ключ -Recurse, вы получите сообщение об ошибке, которое я перечислил ниже сценария.
# 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, а затем повторите команду.