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 :

importer un tableau contenant des noms dans un fichier csv [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut importer un tableau contenant des noms dans un fichier csv
    Bonjour,

    je souhaite faire ce qui est écrit dans le titre. Mon code est :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Write-Host "memberalreadydisplayed="$memberalreadydisplayed
     
    $memberalreadydisplayed  | Where {$_} | Export-csv -path $scriptPath\..\output_files\member.csv
    La ligne 1 retourne
    memberalreadydisplayed= sesa449786 sesa445337 SESA431047 SESA29481
    et le fichier csv, au lieu de contenir les 4 noms, contient
    #TYPE System.String
    "Length"
    "10"
    "10"
    "10"
    "9"
    Que faut-il faire ?

  2. #2
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    La raison du Where {$_} | est que si je l'enlève, j'ai l'erreur suivante :
    Export-Csv : Cannot bind argument to parameter 'InputObject' because it is null.
    et comme j'ai la preuve que $memberalreadydisplayed n'est pas vide, ce message d'erreur est étonnant...

  3. #3
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

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

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Par défaut
    La ligne 1 retourne
    le write-host n'est pas prévu pour affiché des tableau
    il faut soit utiliser la variable seule
    soit utiliser les cmdlets Format-Wide, Format-List, Format-Table, et Format-Custom

    et le fichier csv, au lieu de contenir les 4 noms, contient
    c'est le format normal des CSV
    si tu ne vaux pas la premiere ligne tu rajoute l'option -NoTypeInformation a export-csv
    si tu ne vaux les noms sans rien d'autre fait plutôt ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $memberalreadydisplayed  | set-content -path 'C:\logs scripts\test.csv'
    le | Where {$_} n'est pas vraimment utile pour ce tableau si tu est en PowerShell 4 ou + mais ça filtre les lignes null (vide)

  4. #4
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Nickel

    Mon but global est de lister tous les membres d'un groupe que sélectionne l'utilisateur. Pour mémoire et si ça peut servir, voici mon script complet :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    #vider le contenu du fichier, s'il existe
    $scriptPath = split-path -parent $MyInvocation.MyCommand.Definition #chemin du script en cours
    if (test-path "$scriptPath\member.csv") {clear-content $scriptPath\member.csv}
     
    #liste déroulante, pour sélectionner le groupe à copier
     $scriptPath = split-path -parent $MyInvocation.MyCommand.Definition 
    . "$scriptPath\liste_der.ps1"
     
    $groups=$liste1.Text #on affecte le choix de la liste déroulante dans la variable $ADgroup
    Write-Host "groups="$groups
     
     
    $member_already_displayed=@()
    $domains = "eur.gad.schneider-electric.com","apa.gad.schneider-electric.com","nam.gad.schneider-electric.com","gmea.gad.schneider-electric.com"   #enlevé "gad.schneider-electric.com"
    foreach($domain in $domains) {
        Get-ADGroup  -filter {name -eq $groups}  -Server $domain -properties members
        $member=(Get-ADGroupMember -identity $groups  -Server "gad.schneider-electric.com" | select -Unique).name 
        $ln=$member.length
        for ($i = 0; $i -le $ln; $i++) {
            if (!($member_already_displayed -Contains $member[$i])) { 
                $member_already_displayed+=$member[$i]               
            }
     
        }   
    }
     
    $member_already_displayed  | set-content -path $scriptPath\..\output_files\member.csv

  5. #5
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

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

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Par défaut
    ton script avance

    deux petits details :
    la ligne 17 (ou ce trouve le get-adgroup) me semble inutile sauf si tu veux afficher a l'ecran le detail le l'objet group renvoyer

    le ligne 18 tu ne fait le recursive (que tu avais mis au debut) tu aura donc les nom des sous groupes et non les utilisateurs finaux

    mais c'est peut être voulue !

  6. #6
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    En fait la ligne 17 était utile car nécessaire dans un autre script sauf que je me suis un peu trompé : telle quelle, elle ne sert effectivement à rien donc je l'ai enlevée par contre je ne comprends pas ta remarque au sujet de la ligne 18, ne sachant ce que c'est qu'un sous-groupe...

  7. #7
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

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

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Par défaut
    dans un groupe les membres peuvent être des utilisateurs ou des groupes
    si dans ton groupe il y a un autre groupe tu n'aura que le nom du groupe et pas les membres de ce sous groupe avec get-adgroupmembers seul
    il faut l'option recursive si tu veux les nom des utilisateurs des groupes dans les groupes

    mais peut être tu ne met jamais de groupe dans un autre groupe dans votre entreprise

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Importer des données dans un fichier .csv
    Par programation dans le forum Simulink
    Réponses: 1
    Dernier message: 08/07/2011, 08h41
  2. [CSV] Ajouter et supprimer des ligne dans un fichier CSV
    Par gpsevasion dans le forum Langage
    Réponses: 3
    Dernier message: 28/02/2007, 17h00
  3. Réponses: 4
    Dernier message: 13/12/2006, 17h10
  4. Extraire des données dans un fichier .csv
    Par orj30754 dans le forum C
    Réponses: 7
    Dernier message: 03/11/2006, 14h48
  5. Récuperation des donnees dans un fichier .csv
    Par HMorvan dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 04/09/2006, 22h27

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