<p>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 <code>-Force</code> 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 <code>gci</code>, <code>?</code>, <code>%</code>, etc.</p>
<pre><code class="lang-auto">$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
</code></pre>
<p>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 <code>-WhatIf</code> à l’appel de la cmdlet <code>Remove-Item</code> à la fin des deux lignes.</p>
<p>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 <code>$.LastWriteTime</code> au lieu de <code>$.CreationTime</code>.</p>
<p>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 <a href="http://blog.danskingdom.com/powershell-functions-to-delete-old-files-and-empty-directories/">fonctions réutilisables pratiques sur mon blog</a>.</p>