Удаление файлов старше 15 дней с помощью PowerShell


Answers

просто (PowerShell V5)

Get-ChildItem "C:\temp" -Recurse -File | Where CreationTime -lt  (Get-Date).AddDays(-15)  | Remove-Item -Force
Question

Я хотел бы удалить только файлы, созданные более 15 дней назад в определенной папке. Как я могу сделать это с помощью PowerShell?




В основном, вы перебираете файлы по заданному пути, вычитаете CreationTime каждого файла, найденного с текущего времени, и сравниваете с свойством Days результат. Переключатель -WhatIf скажет вам, что произойдет без фактического удаления файлов (какие файлы будут удалены), удалите переключатель, чтобы фактически удалить файлы:

$old = 15
$now = Get-Date

Get-ChildItem $path -Recurse |
Where-Object {-not $_.PSIsContainer -and $now.Subtract($_.CreationTime).Days -gt $old } |
Remove-Item -WhatIf



$limit = (Get-Date).AddDays(-15)
$path = "C:\Some\Path"

# Delete files older than the $limit.
Get-ChildItem -Path $path -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $limit } | Remove-Item -Force -Recurse

Это приведет к удалению старых папок и содержимого.




Скрипт Esperento57 не работает в старых версиях PowerShell. Этот пример:

Get-ChildItem -Path "C:\temp" -Recurse -force -ErrorAction SilentlyContinue | where {($_.LastwriteTime -lt  (Get-Date).AddDays(-15) ) -and (! $_.PSIsContainer)} | select name| Remove-Item -Verbose -Force -Recurse -ErrorAction SilentlyContinue