Aller au contenu

Suppression dossiers PS


Messages recommandés

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,

Lien vers le commentaire
Partager sur d’autres sites

  • 4 weeks later...

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

 

Lien vers le commentaire
Partager sur d’autres sites

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 ...

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...