Question Supprimer le contenu d'un répertoire

Plus d'informations
il y a 11 ans 4 mois #18335 par Frederic
Bonjour à tous,

Je suis débutant dans la programmation powershell et j'avoue avoir succombé à cet excellent outils.

Il y a peu, j'ai réalisé mon 1er script :

L'objectif était d'effectuer chaque semaine (lundi) une sauvegarde d'un répertoire partagé puis de le vider sans le supprimer.


Mon script a très bien fonctionné, cependant depuis son 1er lancement, il n'efface plus les répertoires, mais uniquement leurs contenus..
Pourtant, la commande en question fonctionne quand je fais mes tests à la main.. (avec le paramètre -recurse)

Je suis un peu perdu et j’espère que quelqu'un pourra me filer un petit coup de pouce.

Je vous colle mon script (c'est mon 1er, soyez indulgents :P ) :

[code:1]

#Déclaration des variables
$date = (Get-Date).ToString('dd-MM-yyyy')
$pathpublic = '\\serveur\public'
$pathbackup = '\\serveur\archives$\Backup_Public'



#Vérification et création du repertoire de backup, copie de Public vers le repertoire de backup puis suppression de Public

If (-not (Test-Path \"$pathbackup\$date\"«»))
{
New-Item -ItemType Directory -name $date -Path $pathbackup -Verbose
Copy-Item $pathpublic/* -Destination $pathbackup\$date\ -Verbose -recurse
Get-ChildItem $pathpublic/* -recurse | Remove-Item -force -recurse -verbose
}


#Suppression des archives de Public de plus de 6 mois

Get-Childitem $pathbackup | ?{$_.PSIsContainer -and ($_.CreationTime -lt (get-Date).adddays(-180))} | remove-item -verbose -force

[/code:1]<br><br>Message édité par: Frederic Deroubaix, à: 3/11/14 18:10

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 4 mois #18336 par Frederic
J'ai quelques soucis pour coller le code complet, je réessaye :

Fichier attaché :
<br><br>Message édité par: Frederic Deroubaix, à: 3/11/14 18:20
Pièces jointes :

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 4 mois #18337 par Laurent Dardenne
Salut,
le dir -recurse n'est pas nécessaire il me semble avec le remove-item -recurse. La lecture des entrées du chemin spécifié suffit.

Quelle version de PS utilises-tu ?

Tu peux aussi joindre un fichier, une recopie d'écran c'est pas le mieux pour tester :)

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 4 mois #18338 par Frederic
Salut Laurent, merci pour ta réponse ! :)

Effectivement je pensais aussi que le paramètre -recurse n'était pas nécessaire à ce niveau-là et je me suis retrouvé avec quelques petits problèmes (pas au niveau du code, mais du résultat obtenu).
Je vais réessayer pour être sûr.

Je travaille sur la version 3 sur mon poste fixe et sur mon portable, mais le serveur qui exécute le script est en version 2.

Dsl pour la copie d'écran, ça m'a semblé être le plus simple pour afficher le code en gardant la mise en page pour simplifier la lecture ;)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 4 mois #18339 par Laurent Dardenne
Frederic Deroubaix écrit:

Je travaille sur la version 3 sur mon poste fixe et sur mon portable, mais le serveur qui exécute le script est en version 2.

En direct de l'aide :

-Recurse [&lt;SwitchParameter&gt;]
Supprime les éléments aux emplacements spécifiés, de même que dans tous les éléments enfants de ces emplacements.

Le paramètre Recurse ne fonctionne pas correctement dans cette applet de commande.

A vérifier avec la v4.
Les deux appels à Remove-Item posent pb ou un seul ?
Tu as peut être des fichiers cachés, mais je ne me souviens plus s'il y a un warning ou autre dans ce cas.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 4 mois #18340 par Frederic
Quand j’exécute le code sur PS directement pas de soucis. Le problème survient quand le script est exécuté via une tâche planifiée (à partir du deuxième lancement apparemment), mais n'ayant pas encore 6 mois d'ancienneté au niveau de mes backup, le second \&quot;Remove-Item\&quot; n'est pas encore exécuté.

La différence entre les deux appels à Remove-Item est que le premier doit vider un répertoire complètement, mais sans effacer celui-ci, alors que le deuxième doit simplement supprimer le répertoire.

Pour tester, j'ai modifié la date de création d'un répertoire pour qu'il soit supprimé via le second \&quot;Remove-Item\&quot; : Pas de soucis, le répertoire complet est bien supprimé.

Je pense mettre à jour la version de PS sur le serveur prochainement. :whistle:

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.047 secondes
Propulsé par Kunena