Supprimer les fichiers de plus de 15 jours avec PowerShell
Source : Stack Overflow [powershell].)
Les réponses données ne supprimeront que les fichiers (ce qui correspond effectivement au titre de cette publication), mais voici du code qui supprimera d’abord tous les fichiers de plus de 15 jours, puis supprimera récursivement tous les répertoires vides qui pourraient rester. Mon code utilise également l’option -Force pour supprimer les fichiers cachés et en lecture seule. De plus, j’ai choisi de ne pas utiliser d’alias car l’auteur de la question est nouveau dans PowerShell et pourrait ne pas comprendre ce que signifient gci, ?, %, etc.
$limit = (Get-Date).AddDays(-15)
$path = "C:\Some\Path"
# Delete files older than the $limit.
Get-ChildItem -Path $path -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $limit } | Remove-Item -Force
# Delete any empty directories left behind after deleting the old files.
Get-ChildItem -Path $path -Recurse -Force | Where-Object { $_.PSIsContainer -and (Get-ChildItem -Path $_.FullName -Recurse -Force | Where-Object { !$_.PSIsContainer }) -eq $null } | Remove-Item -Force -Recurse
Et bien sûr, si vous souhaitez voir quels fichiers/dossiers seront supprimés avant de les supprimer réellement, vous pouvez simplement ajouter le commutateur -WhatIf à l’appel de la cmdlet Remove-Item à la fin des deux lignes.
Si vous souhaitez uniquement supprimer les fichiers qui n’ont pas été mis à jour depuis 15 jours, plutôt que ceux créés il y a 15 jours, vous pouvez utiliser $_.LastWriteTime au lieu de $_.CreationTime.
Le code présenté ici est compatible avec PowerShell v2.0, mais je présente également ce code et le code plus rapide pour PowerShell v3.0 sous forme de fonctions réutilisables pratiques sur mon blog.