PowerShell: как удалить файлы или папки, последние обновления которых были сделаны более чем X дней

Чтобы удалить файлы или папки в PowerShell, которые последний раз обновлялись старше указанного количества дней, вы можете использовать следующие методы:

Метод 1: использование командлетов Get-ChildItemи Remove-Item

$limit = (Get-Date).AddDays(-X)  # Replace X with the number of days
# Delete files older than X days
Get-ChildItem -Path "C:\Path\to\folder" -File | Where-Object { $_.LastWriteTime -lt $limit } | Remove-Item -Force
# Delete folders older than X days
Get-ChildItem -Path "C:\Path\to\folder" -Directory | Where-Object { $_.LastWriteTime -lt $limit } | Remove-Item -Force -Recurse

Метод 2. Использование утилиты командной строки robocopy

$limit = (Get-Date).AddDays(-X)  # Replace X with the number of days
# Delete files older than X days
robocopy "C:\Path\to\folder" "C:\Path\to\delete" /MOV /MINAGE:X
# Delete folders older than X days
robocopy "C:\Path\to\folder" "C:\Path\to\delete" /E /MOVE /MINAGE:X

Метод 3. Использование командлетов New-TimeSpanи Remove-Item

$limit = (Get-Date).AddDays(-X)  # Replace X with the number of days
# Delete files older than X days
Get-ChildItem -Path "C:\Path\to\folder" -File | Where-Object { (New-TimeSpan -Start $_.LastWriteTime -End (Get-Date)).Days -gt X } | Remove-Item -Force
# Delete folders older than X days
Get-ChildItem -Path "C:\Path\to\folder" -Directory | Where-Object { (New-TimeSpan -Start $_.LastWriteTime -End (Get-Date)).Days -gt X } | Remove-Item -Force -Recurse