Bonjour à tous,
Je sèche un peu sur une problématique, je veux créer un script de rotation de log assez spécial: tout d'abord j'ai une arborescence de ce type :
Dans ces dossiers, j'ai un nombre variable de logs qui sont stockes, ce que je veux c'est ne garder que les 3 derniers logs (jamais moins et je ne fais rien si j'ai moins de 3 logs dans le dossier).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Dossier_racine : -> Dossier1: -> log1 -> log2 -> .... -> Dossier2: -> log1 -> log2 -> .... -> etc -> etc -> etc -> etc
Problème, l'arborescence est très volumineuse (~env 10000 fichiers) et je ne peux pas savoir la date la plus ancienne (comprenez, je ne peux pas supprimer tout les logs > à 30 jours par exemple).
En bref, avez vous une solution pour, dans un dossier, comparez tous les fichiers présents dans celui-ci et ne gardez que les 3 plus récents?
Voici le morceau de code qui récupère l'arbo actuellement, il manque la comparaison justement....
Merci d'avance et bonne soirée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 $LogDir = "mon emplacement de log" $date = Get-Date $verify_log_dir = Test-Path $LogDir if ($verify_log_dir) { write-host "Succeed" } else { Write-Host "Error: Log directory $LogDir does not exist." exit } $logs_root = Get-ChildItem -Directory -recurse $LogDir if ($logs_root) { foreach ($file in $logs_root) { if ($file.Attributes -eq "Directory") { $contenu = Get-ChildItem $file.FullName write-host "dossier parent :" $file.name if ($contenu.count -gt 3) { foreach ($fichier in $contenu) { write-host $fichier.Name //FIXME : LA COMPARAISON } } } } }![]()
Partager