m_jssln Posted May 23, 2019 Report Share Posted May 23, 2019 Hello, (J'ai un doute sur le classement de ce poste, je me suis tâté avec la section windows, je m'excuse si jamais j'ai eu tord) Je rencontre un problème avec un disque saturé par des sauvegardes. Le logiciel est un peu nul, mais c'était a priori le seul rentrant dans le budget à l'époque. Celui ci ne supprime plus les anciennes sauvegardes. J'ai aujourd'hui mon "Z:" avec des dossiers du style "d$ 2019-05-23 17-45-00;" et "Logiciel 2019-05-23 17-45-00;". Le nom du dossier est donc créé sous la forme "d$ AAAA-MM-DD HH-mm-ss;". Mon script est adapté pour récupérer la date dans le nom du dossier, jusque là, tout est ok ! $now = Get-Date Get-ChildItem -Force "z:\" | foreach { if ($_.basename -match "$d (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) (?<hour>\d{2});(?<minute>\d{2});(?<second>\d{2})$") { $fileData = Get-Date -Year $Matches.year -Month $Matches.month -Day $Matches.day ` -Hour $Matches.hour -Minute $matches.minute -Second $Matches.second $_ | Add-Member -MemberType NoteProperty -Name 'DateFromName' -Value $fileData -PassThru } } | Where-Object {($_.DateFromName) -lt $now.addDays(-7)} | Remove-Item -Force -Recurse (J'ai également dupliqué ce début de code pour le deuxième nom de dossier qui commence par "Logiciel ...". Le problème : lorsque j'execute mon script, celui ci me sort Citation Le répertoire n’est pas vide. Au caractère C:\Users\Administrateur\Desktop\suppression-sauvegarde+7.ps1:10 : 61 + } | Where-Object {($_.DateFromName) -lt $now.addDays(-7)} | Remove-Item -Force - ... + ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : WriteError: (comptabilite:DirectoryInfo) [Remove-Item], IOException + FullyQualifiedErrorId : RemoveFileSystemItemIOError,Microsoft.PowerShell.Commands.RemoveItemComman Pourriez vous m'aider s'il vous plait ? Je vous remercie d'avance, Link to comment Share on other sites More sharing options...
TheCyberSeb Posted June 20, 2019 Report Share Posted June 20, 2019 Bonjour, Le script est lancé avec un compte ayant des droits d'admin ? Les fichiers dans le répertoire ne sont pas locker par le logiciel de sauvegarde ? Au vu des exemples sur la doc officielle : https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/remove-item?view=powershell-6 Je dirais que la ligne suivante ne doit pas être correcte : Where-Object {($_.DateFromName) -lt $now.addDays(-7)} | Remove-Item -Force -Recurse Link to comment Share on other sites More sharing options...
m_jssln Posted June 21, 2019 Author Report Share Posted June 21, 2019 Bonjour, Merci pour le retour ! Oui le script est lancé en tant qu'admin ! Le logiciel de sauvegarde est installé sur le serveur A et stock sur le serveur A. LA sauvegarde est celle du serveur B. En fait ce qui poserait problème avec la ligne c'est que ma boucle continuait sur les dossiers enfants! mais ceux ci ne comportent pas la date dans le nom comme le fichier parent. Il faudrait que je casse la boucle au dernier dossier, du premier niveau de / et qu'ensuite le script descende au niveau suivant et supprime les dossiers présents ... Link to comment Share on other sites More sharing options...
Recommended Posts