2 votes

Créez un script pour supprimer des fichiers dans les sous-dossiers

Bon après-midi,

Je dois créer un script pour supprimer les fichiers plus anciens de 30 jours du dossier Téléchargements pour tous les utilisateurs sur un serveur.

J'ai utilisé la commande ci-dessous mais cela n'a pas fonctionné. Avez-vous une idée de ce qui pourrait clocher?

Get-ChildItem "\\serveur\dossier1\Données_utilisateur\*\Téléchargements\*" -Recurse |
    Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-30))} |
        Remove-Item -ErrorAction SilentlyContinue

0voto

postanote Points 3762

Alors, que se passe-t-il si vous faites ceci...?

Get-ChildItem 'D:\Test\Reference\New folder' -Recurse
<#
# Résultats

    Répertoire: D:\Test\Reference\New folder

Mode                LastWriteTime         Length Name                                                                                                          
----                -------------         ------ ----                                                                                                          
d-----        06-Mar-20     10:52                New folder (2)                                                                                                
-a----        10-Jan-20     17:59              0 awél.txt                                                                                                      
-a----        04-Jan-20     02:01             39 hello.bat                                                                                                     
-a----        04-Jan-20     01:43             44 hello.ps1                                                                                                     
-a----        04-Jan-20     02:16             64 mytest - Copy.txt                                                                                             
-a----        04-Jan-20     02:16             64 mytest.txt                                                                                                    

    Répertoire: D:\Test\Reference\New folder\New folder (2)

Mode                LastWriteTime         Length Name                                                                                                          
----                -------------         ------ ----                                                                                                          
-a----        10-Jan-20     17:59              0 awél.txt                                                                                                      
-a----        04-Jan-20     02:01             39 hello.bat                                                                                                     
-a----        04-Jan-20     01:43             44 hello.ps1                                                                                                     
-a----        04-Jan-20     02:16             64 mytest - Copy.txt                                                                                             
-a----        04-Jan-20     02:16             64 mytest.txt   
#>

Get-ChildItem 'D:\Test\Reference\New folder' -Recurse | 
Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-1))} | 
Remove-Item -WhatIf

<#
# Résultats

Que faire : Exécution de l'opération "Supprimer le fichier" sur la cible "D:\Test\Reference\New folder\awél.txt".
Que faire : Exécution de l'opération "Supprimer le fichier" sur la cible "D:\Test\Reference\New folder\hello.bat".
Que faire : Exécution de l'opération "Supprimer le fichier" sur la cible "D:\Test\Reference\New folder\hello.ps1".
Que faire : Exécution de l'opération "Supprimer le fichier" sur la cible "D:\Test\Reference\New folder\mytest - Copy.txt".
Que faire : Exécution de l'opération "Supprimer le fichier" sur la cible "D:\Test\Reference\New folder\mytest.txt".
Que faire : Exécution de l'opération "Supprimer le fichier" sur la cible "D:\Test\Reference\New folder\New folder (2)\awél.txt".
Que faire : Exécution de l'opération "Supprimer le fichier" sur la cible "D:\Test\Reference\New folder\New folder (2)\hello.bat".
Que faire : Exécution de l'opération "Supprimer le fichier" sur la cible "D:\Test\Reference\New folder\New folder (2)\hello.ps1".
Que faire : Exécution de l'opération "Supprimer le fichier" sur la cible "D:\Test\Reference\New folder\New folder (2)\mytest - Copy.txt".
Que faire : Exécution de l'opération "Supprimer le fichier" sur la cible "D:\Test\Reference\New folder\New folder (2)\mytest.txt".
#>

Get-ChildItem 'D:\Test\Reference\New folder' -Recurse | 
Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-1))} | 
Remove-Item -Confirm:$false -Force
Get-ChildItem 'D:\Test\Reference\New folder' -Recurse
<#
# Résultats
    Répertoire: D:\Test\Reference\New folder

Mode                LastWriteTime         Length Name                                                                                                          
----                -------------         ------ ----                                                                                                          
d-----        06-Mar-20     10:51                New folder (2) 
#>

0voto

harrymc Points 394411

Cela fonctionnerait mieux :

$Path = "\\server\folder1\User_Data\*\Downloads"
$Daysback = "-30"
$CurrentDate = Get-Date
$DatetoDelete = $CurrentDate.AddDays($Daysback)
Get-ChildItem $Path -Recurse | Where-Object { $_.LastWriteTime -lt $DatetoDelete } | Remove-Item

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X