В настоящее время я новичок в PowerShell, и я создал скрипт на основе собранной информации в сети, которая будет выполнять операцию удаления найденных файлов в папке с их LastWriteTime меньше 1 день.Windows PowerShell - удалить файлы старше X дней
В настоящее время сценарий выглядит следующим образом:
$timeLimit = (Get-Date).AddDays(-1)
$oldBackups = Get-ChildItem -Path $dest -Recurse -Force -Filter "backup_cap_*" |
Where-Object {$_.PSIsContainer -and $_.LastWriteTime -lt $timeLimit}
foreach($backup in $oldBackups)
{
Remove-Item $dest\$backup -Recurse -Force -WhatIf
}
Насколько я знаю, команда -WhatIf
будет выводить на консоль, что команда «должна» делать в реальных сценариях. Проблема в том, что -WhatIf
ничего не выводит, и даже если я удалю его, файлы не будут удалены, как ожидалось.
Сервер - это Windows 2012 R2, и команда запускается в PowerShell ISE V3.
Когда команда будет работать, она будет «переведена» в задачу, которая будет запускаться каждую ночь после завершения другой задачи.
2) Если вы хотите удалить файлы, почему вы только включая папки с '$ PSIsContainer'? 3) Если это ваш скрипт, откуда исходит $ dest? Если он не определен, gci будет читать текущий рабочий каталог без ошибок. 4) Вы подтвердили, что '$ oldBackups' имеет что-нибудь в нем? 5) Вызывает ли «Удалить-элемент» какие-либо исключения из файлов, которые не существуют? – TessellatingHeckler
$ dest объявлен выше во внешней области. Это рабочий каталог сценария. Там создаются резервные копии. И нет, никаких исключений не бросают. Что касается $ PSIsContainer, вы правы. Мы решили, что резервные копии не будут находиться в папке, они будут непосредственно в рабочем каталоге, поэтому в основном резервные копии будут находиться под шаблоном backup_cap_dateOfWrite, который выводится mysqldump. – darksleep