Сценарии Powershell для удаления файлов журналов через 90 дней?
Сценарий, над которым я работаю, должен удалить файлы журнала в формате .jrn через 90 дней. Имя файла-это сама дата. например.20200720.jrn, но скрипт удаляет все файлы после выполнения. Пожалуйста, помогите обязательно.
Кроме того, для инициалов, таких как ABCD20200720.jrn, он работает отлично, но только для 20200720.jrn он также удаляет последний файл.
Что я уже пробовал:
$now = Get-Date Get-ChildItem "C:\Logs" -Filter '*.jrn' | foreach { if ($_.basename -match " $now (?<year>\d{04})(?<month>\d{2})(?<day>\d{2})$") { $fileData = Get-Date -Year $Matches.year -Month $Matches.month -Day $Matches.day ` $_ | Add-Member -MemberType NoteProperty -Name 'DateFromName' -Value $fileData -PassThru } } | Where-Object {($_.DateFromName).addDays(-90) -lt $now} | Remove-Item -Force
Garth J Lancaster
Не уверен, что ты спрашиваешь ... ты говоришь
он должен удалить файлы, такие как ABCD20200720.jrn, но
он не должен удалять файлы, такие как 20200720.jrn ??
Замечу нигде вы не проверяете файл на наличие префикса из 4 символов перед датой
AVT007
Спасибо за Ваш быстрый ответ.
Я новичок в скриптах powershell, поэтому, возможно, не очень хорошо объясняю.
Я говорю, что скрипт, который я разместил, работает для файлов с инициалами типа ABCD20200720.jrn
но некоторые журналы генерируются исключительно с датой, например 20200720.jrn, без инициалов, и мне нужно удалить их, если они пересекают 90 дней.
Итак, мне нужна помощь в моем скрипте для удаления файла 20200920.jrn.
Прямо сейчас скрипты удаляют все файлы в папке.
Richard MacCutchan
Измените сценарий так, чтобы он отображал выбранные элементы, а не удалял их, и вы сможете увидеть, какие из них он выбирает.