Suppression de fichiers en Powershell
De BlaxWiki
Révision datée du 18 septembre 2019 à 08:41 par 127.0.0.1 (discussion) (Page créée avec « === Procédure === <pre> Notice utilisation du script SuppressionAnciensFichiers.ps1 1/ Exécuter le script 2/ Il va prompter une demande pour renseigner le chemin du do... »)
Procédure[modifier]
Notice utilisation du script SuppressionAnciensFichiers.ps1 1/ Exécuter le script 2/ Il va prompter une demande pour renseigner le chemin du dossier parent dans lequel il doit faire sa recherche Par exemple, renseigner : 'C:\Dossier\DossierParent' 3/ Il va prompter une demande pour la date. Le script supprimera les fichiers antérieurs à cette date. Elle doit être fournie au format jj-mm-AAAA. 4/ Le script promptera une demande pour savoir s'il y a des dossiers à ignorer pour la recherche dans le dossier parent. Valider sans rien entrer s'il n'y a pas de dossiers à ignorer. 5/ Si le dossier parent ou la date ne sont pas renseignés, un message d'erreur s'affichera et le script s'arrêtera là. 6/ Si la date n'est pas au bon format, un message d'erreur s'affichera et le script s'arrêtera là. 7/ Si tout est bon, le script ira supprimer tous les fichiers antérieurs à la date fournie. /!\ INFO IMPORTANTE : Le script supprime les fichiers antérieurs à la date fournie sans les lister avant. Il faut donc être sûr avant de lancer le script qu'il n'y a pas de fichier que l'on souhaite garder qui serait antérieurs à cette date et présent dans les dossiers sondés. /!\ Attention : La variable d'ignore ne permet pas d'ignorer des fichiers, juste des dossiers.
Script[modifier]
#Script de suppression de fichiers plus anciens que $Date
#On demande à l'utilisateur de renseinger les variables nécessaires pour l'exécution du script
$Dossier = Read-Host -Prompt 'Chemin du dossier Parent'
$Date = Read-Host -Prompt 'Date avant laquelle on peut supprimer les fichiers (au format jj-mm-AAAA)'
$Ignore = Read-Host -Prompt 'Nom des dossiers à ignorer (Ne rien mettre si aucun dossier à ignorer)'
#echo $Dossier
#Get-Date $Date
#echo $Ignore
#On vérifie que le Dossier Parent et la Date on bien été renseignés
If (!$Dossier -Or !$Date){
echo "Le Chemin du dossier Parent ou la Date n'ont pas été renseignés"
}
else{
#On vérifie que la Date est au bon format
if ($date -as [DateTime]){
#On cherche récursivement dans le dossier Parent le dossier voulu, et dedans les fichiers plus anciens que $Date, puis on les supprime
Get-ChildItem -Recurse -Path $Dossier -Exclude $Ignore -name "1 - Réception données Clients" | Get-ChildItem -Recurse -File | Where-Object {$_.LastWriteTime -Lt (Get-Date $Date)} | Remove-Item -Force
Get-ChildItem -Recurse -Path $Dossier -Exclude $Ignore -name "4 - Envois mensuels" | Get-ChildItem -Recurse -File | Where-Object {$_.LastWriteTime -Lt (Get-Date $Date)} | Remove-Item -Force
Get-ChildItem -Recurse -Path $Dossier -Exclude $Ignore -name "2- Fiches navettes" | Get-ChildItem -Recurse -File | Where-Object {$_.LastWriteTime -Lt (Get-Date $Date)} | Remove-Item -Force
Get-ChildItem -Recurse -Path $Dossier -Exclude $Ignore -name "3- Prépas" | Get-ChildItem -Recurse -File | Where-Object {$_.LastWriteTime -Lt (Get-Date $Date)} | Remove-Item -Force
Get-ChildItem -Recurse -Path $Dossier -Exclude $Ignore -name "4- Masques" | Get-ChildItem -Recurse -File | Where-Object {$_.LastWriteTime -Lt (Get-Date $Date)} | Remove-Item -Force
Get-ChildItem -Recurse -Path $Dossier -Exclude $Ignore -name "2- Journaux salaires - Tableaux charges" | Get-ChildItem -Recurse -File | Where-Object {$_.LastWriteTime -Lt (Get-Date $Date)} | Remove-Item -Force
Get-ChildItem -Recurse -Path $Dossier -Exclude $Ignore -name "3- OD - Provisions CP" | Get-ChildItem -Recurse -File | Where-Object {$_.LastWriteTime -Lt (Get-Date $Date)} | Remove-Item -Force
Get-ChildItem -Recurse -Path $Dossier -Exclude $Ignore -name "4- Virements" | Get-ChildItem -Recurse -File | Where-Object {$_.LastWriteTime -Lt (Get-Date $Date)} | Remove-Item -Force
echo "Tous les fichiers antérieurs au $Date ont été supprimés"
}
else{
echo "La date fournie n'est pas au bon format. Pour rappel, elle doit être au format jj-mm-AAAA"
}
}