IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Supprimer contenu de dossier en fonction d'une liste donnée


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2013
    Messages : 94
    Par défaut Supprimer contenu de dossier en fonction d'une liste donnée
    Bonjour,

    Je dois supprimer le dossiers d'utilisateurs qui ne sont plus présent.

    Ma première idée est de lire un fichier.txt avec les identifiants à supprimer ensuite les dossiers sont effacés.

    $dosEffacer= "C:\Users\hacbao\Desktop\test\IDaEffacer\"
    $user= (get-content -path "C:\Users\hacbao\Desktop\test\liste.txt")

    $user | Remove-Item -path $dosEffacer -Recurse -WhatIf
    Pouvez-vous m'aider ?


    Merci

  2. #2
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2013
    Messages : 94
    Par défaut
    quelqu'un a-t'il une piste à me donner ?

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2007
    Messages : 105
    Par défaut
    Bonjour,

    Il te manque que le foreach pour parcourir chacun des éléments contenu dans ta variable $user et d'exécuter la commande adéquate.
    Si tu as besoin d'aide pour utiliser cette instruction, tu peux faire une recherche avec les mots suivants: Powershell foreach

    Salutations.

  4. #4
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2013
    Messages : 94
    Par défaut
    Merci pour cette première réponse. J'ai essayé plein d'autres façon pour faire fonctionner mon script à chaque fois j'ai un message d'erreur exemple ci-dessous.

    Qu'est qui faut utiliser foreach ou foreach-object ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ForEach : Impossible de résoudre le nom d’entrée «*Remove-Item*» dans une méthode.
    Au caractère C:\Users\administrateur\Desktop\sup dos user.ps1:6 : 10
    + $liste | ForEach Remove-Item -path $dosEffacer -Recurse -WhatIf
    +          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument : (dossier_A:PSObject) [ForEach-Object], PSArgumentException
        + FullyQualifiedErrorId : MethodNotFound,Microsoft.PowerShell.Commands.ForEachObjectCommand
     
    ForEach : Impossible de résoudre le nom d’entrée «*Remove-Item*» dans une méthode.
    Au caractère C:\Users\administrateur\Desktop\sup dos user.ps1:6 : 10
    + $liste | ForEach Remove-Item -path $dosEffacer -Recurse -WhatIf
    +          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument : (dossier_B:PSObject) [ForEach-Object], PSArgumentException
        + FullyQualifiedErrorId : MethodNotFound,Microsoft.PowerShell.Commands.ForEachObjectCommand

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2007
    Messages : 105
    Par défaut
    Bonjour,

    Oui, mais non ...

    L'instruction foreach définit un bloque de code qui devra être répéter au temps de fois que d'éléments itérables.
    Ton instruction doit être dans le bloque de code de la boucle foreach. As-tu consulté la documentation au sujet de cette instruction ?

    Exemple avec un tableau de chaînes de caractères à afficher:
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $myArray=@('Bonjour', 'Bienvenu', 'Au revoir')
    foreach ($str in $myArray) {
        Write-Host -Object $str
    }

    Il te suffit maintenant de parcourir ton tableau définit dans ta variable $user, puis de compléter ton chemin avec la variable $dosEffacer et la valeur itérée.
    Je te conseil dans un premier temps d'afficher le résultat de la concaténation de la chaîne de caractères, puis de remplacer l'instruction Write-Host par l'instruction Remove-Item.

    N'oublie pas de consulter l'aide en ligne pour l'instruction Remove-Item (commande: help <instruction>).

    Pour concaténer deux chaînes de caractères, tu peux utiliser l'une des méthodes suivantes:
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $newStr = ($dosEffacer + $str)
    $newStr = "$($dosEffacer)$($str)"
    $newStr = "{0}{1}" -f $dosEffacer, $str #Attention, si des accolades sont utilisées dans la chaîne, elles devront être doublées!

    Salutations.
    PS: Pour mieux comprendre la différence entre foreach et ForEach-Object, je te conseil cet article sur StackOverflow: https://stackoverflow.com/questions/...-in-powershell

  6. #6
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2013
    Messages : 94
    Par défaut
    Bonjour,

    J'ai lu les docs des commandes.

    j'ai revue le script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    $objet= "C:\Users\admin\Desktop\remove-dossier\TEST-SUP\"
    
    $liste= (cat "C:\Users\admin\Desktop\remove-dossier\supression_dossier_test.txt")
    
    ForEach ( $objet in $liste) {
    
    Write-Host $liste
    }
    j’obtiens en résultat autant de dossier plutôt que d'avoir la liste, est-ce que je suis sur la bonne voie ?
    dossier_A dossier_B dossier_C dossier_D dossier_E
    dossier_A dossier_B dossier_C dossier_D dossier_E
    dossier_A dossier_B dossier_C dossier_D dossier_E
    dossier_A dossier_B dossier_C dossier_D dossier_E
    dossier_A dossier_B dossier_C dossier_D dossier_E
    dossier_A dossier_B dossier_C dossier_D dossier_E

    Si je mets Remove-Item -Path $objet -Recurse -WhatIf

    j'ai la réponses suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Remove-Item : Impossible de lier l'argument au paramètre «*Path*», car il s'agit d'une chaîne vide.
    Au caractère C:\Users\administrateur\Desktop\sup dos userV2.ps1:10 : 13
    + Remove-Item $objet -Recurse -WhatIf
    +             ~~~~~~
        + CategoryInfo          : InvalidData : (:) [Remove-Item], ParameterBindingValidationException
        + FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.RemoveItemCommand

Discussions similaires

  1. [Batch] Supprimer de fichier .pdf dans un dossier zippé à partir d'une liste
    Par Gardel dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 09/11/2010, 12h35
  2. Réponses: 5
    Dernier message: 04/03/2009, 10h39
  3. Créer ou modifier un dossier en fonction d'une valeur dans une cellule
    Par Pierre.g dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/08/2008, 17h37
  4. Réponses: 7
    Dernier message: 17/11/2007, 17h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo