Jump to content

Recommended Posts

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,

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other 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 ...

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...