# Folder Housekeeping Script PowerShell pour effectuer le nettoyage automatique d'un dossier en supprimant les fichiers obsolètes. ## 📋 Description `Cleanup-OldFiles.ps1` est un script PowerShell conçu pour Windows 10 IoT et Windows 10/11 qui supprime automatiquement les fichiers dont la date de dernière modification dépasse un certain âge (en heures). ### Fonctionnalités - ✅ Suppression récursive des fichiers obsolètes - ✅ Configuration flexible de la durée de rétention - ✅ Mode simulation (`-WhatIf`) pour tester sans supprimer - ✅ Journalisation complète avec horodatage - ✅ Gestion robuste des erreurs - ✅ Compatible Windows 10 IoT / PowerShell natif ## 🚀 Utilisation ### Syntaxe ```powershell .\Cleanup-OldFiles.ps1 -FolderPath [-HoursOld ] [-WhatIf] ``` ### Paramètres | Paramètre | Obligatoire | Description | Défaut | | ------------- | ----------- | ------------------------------------------------------------------------------ | ------ | | `-FolderPath` | ✅ Oui | Chemin du dossier à nettoyer | - | | `-HoursOld` | ❌ Non | Nombre d'heures (âge minimum des fichiers à supprimer) | 24 | | `-WhatIf` | ❌ Non | Mode simulation - affiche ce qui serait supprimé sans effectuer la suppression | - | ### Exemples #### Supprimer les fichiers de plus de 24 heures (défaut) ```powershell .\Cleanup-OldFiles.ps1 -FolderPath "C:\Logs" ``` #### Supprimer les fichiers de plus de 3 heures ```powershell .\Cleanup-OldFiles.ps1 -FolderPath "C:\Temp" -HoursOld 3 ``` #### Mode simulation (aperçu sans suppression) ```powershell .\Cleanup-OldFiles.ps1 -FolderPath "C:\Data" -HoursOld 48 -WhatIf ``` ## 📅 Automatisation ### Planificateur de tâches Windows Pour exécuter le script automatiquement, vous pouvez créer une tâche planifiée : ```powershell # Créer une tâche qui s'exécute quotidiennement à 3h du matin $action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-ExecutionPolicy Bypass -File C:\Scripts\Cleanup-OldFiles.ps1 -FolderPath C:\Logs -HoursOld 24" $trigger = New-ScheduledTaskTrigger -Daily -At 3am $principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest Register-ScheduledTask -TaskName "Housekeeping-Logs" -Action $action -Trigger $trigger -Principal $principal -Description "Nettoyage automatique des logs" ``` ### Tâche toutes les heures ```powershell $action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-ExecutionPolicy Bypass -File C:\Scripts\Cleanup-OldFiles.ps1 -FolderPath C:\Temp -HoursOld 3" $trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Hours 1) -RepetitionDuration ([TimeSpan]::MaxValue) $principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest Register-ScheduledTask -TaskName "Housekeeping-Temp" -Action $action -Trigger $trigger -Principal $principal ``` ## 📊 Sortie du script Le script affiche des logs horodatés pour chaque opération : ```text [2025-11-25 14:30:00] Démarrage du housekeeping sur: C:\Temp [2025-11-25 14:30:00] Suppression des fichiers plus vieux que 3 heures [2025-11-25 14:30:00] Date limite: 2025-11-25 11:30:00 [2025-11-25 14:30:01] Nombre de fichiers à supprimer: 15 [2025-11-25 14:30:01] Supprimé: C:\Temp\old_file1.txt [2025-11-25 14:30:01] Supprimé: C:\Temp\old_file2.log ... [2025-11-25 14:30:05] ---------------------------------------- [2025-11-25 14:30:05] Housekeeping terminé [2025-11-25 14:30:05] Fichiers supprimés: 15 [2025-11-25 14:30:05] Erreurs: 0 ``` ## ⚙️ Prérequis - Windows 10 IoT / Windows 10 / Windows 11 - PowerShell 5.1 ou supérieur - Droits d'accès en écriture sur le dossier cible ## 🔒 Sécurité - Le script vérifie l'existence du dossier avant toute opération - Gestion des erreurs pour chaque fichier individuellement - Mode `WhatIf` pour valider les suppressions avant exécution - Code de sortie approprié (0 = succès, 1 = erreur) ## 📝 Licence Script libre d'utilisation. ## 👤 Auteur Créé pour l'automatisation du housekeeping sur Windows 10 IoT.