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 :

Liste et traiter une liste de dossier


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Novembre 2014
    Messages : 2
    Par défaut Liste et traiter une liste de dossier
    Bonjour,

    je n'arrive pas a lister une liste de dossier et a faire un traitement dessus.

    Objectif: lister les sous dossiers de C:\Users ET formater le nom des dossiers qui contient un "."

    pour lister mes dossiers j'utilise la commande suivante:

    $Liste= ls C:\users | ft -property name
    foreach ($user in $liste){write-output "bonjour $user"}

    la commande 1iere commande me donne bien la liste de mes dossiers dans C:\users
    Name
    ----
    Administrateur

    Mais ma 2ieme commande me renvoit
    bonjour Microsoft.PowerShell.Commands.Internal.Format.FormatStartData
    bonjour Microsoft.PowerShell.Commands.Internal.Format.GroupStartData

    la finalité serait de remplacer Write-output par la methode "split" qui me permet de récupérer uniquement le nom de mon utilisateur si mon dossier se nomme "User.Domaine"


    D'avance merci pour votre aide et vos explications

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    pour les traitements on n'utilise pas les cmdlets Format-xxx, car ceux-ci transforment les objets reçus en des objets spécialisés pour l'affichage sous Powershell.
    Ceci suffit pour récupérer les objets
    Il faut donc scinder le traitement des objets de leur affichage.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Novembre 2014
    Messages : 2
    Par défaut
    Merci pour ta réponse, je vais essayer avec ca.

    je reviendrais surement demander de l'aide je dois trouver ma fonction pour mercredi.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2014
    Messages : 5
    Par défaut
    Je propose ceci au cas où tu n'aies pas trouvé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $listeUsers = Get-ChildItem "C:\Users"
    
    foreach($user in $listeUsers)
    {
        Write-Output("bonjour " + $user.name)
    }
    et pour séparer le nom ensuite, s'il contient un point :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $listeUsers = Get-ChildItem "C:\Users"
    
    foreach($user in $listeUsers)
    {
        if($user.name -match ".")
        {
            $string = "bonjour " + $user.name.Split(".")[0]
        }
        else
        {
            $string = "bonjour " + $user.name
        }
        Write-Output $string
    }

  5. #5
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut
    Citation Envoyé par sodawillow Voir le message
    Je propose ceci au cas où tu n'aies pas trouvé
    J'aime bien ce code
    Citation Envoyé par sodawillow Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Write-Output("bonjour " + $user.name)
    Surtout d'après ce que j'ai précédemment indiqué :
    Citation Envoyé par Laurent Dardenne Voir le message
    Il faut donc scinder le traitement des objets de leur affichage.
    D'accord pour l'usage du cmdlet Write-Host, mais pour celui de Write-Output qui émet l'objet dans le pipeline, j'ai un doute...
    Enfin
    Citation Envoyé par sodawillow Voir le message
    et pour séparer le nom ensuite, s'il contient un point :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    if($user.name -match ".")
    ...
    Si tu n'échappes pas le méta caractère '.' ( "\."), n'importe quel caractère correspondra.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2014
    Messages : 5
    Par défaut
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $listeUsers = Get-ChildItem "C:\Users"
     
    foreach($user in $listeUsers)
    {
        $userName = $user.name
        if($userName -match "\.")
        {
            $string = "bonjour " + $userName.Split(".")[0]
        }
        else
        {
            $string = "bonjour " + $userName
        }
        Write-Host $string
    }
    ?

    pour Write-Output, j'ai vu des avis contraires, et il ne m'a pas encore attiré de problèmes ... mais j'essaierai d'utiliser Write-Host dans ce cas

    "\." échappe le point pour la REGEX c'est ça ?

Discussions similaires

  1. [AJAX] liste liée a une liste liée a une liste
    Par dirty_harry dans le forum AJAX
    Réponses: 2
    Dernier message: 03/07/2009, 11h18
  2. modifier une liste contenue dans une liste
    Par harris_macken dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 18/03/2008, 16h52
  3. Réponses: 5
    Dernier message: 12/03/2008, 18h16
  4. acceder à une liste contenue dans une liste
    Par CPI_en_mousse dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 12/06/2007, 08h33
  5. remplir une liste à partir d'une liste
    Par LeXo dans le forum Access
    Réponses: 7
    Dernier message: 14/04/2006, 12h29

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