none
Importation d'un fichier csv avec powershell RRS feed

  • Question

  • Bonjour ! Je suis débutant en powershell et exchange, dans un exercice de classe, on me demande d'importer des contacts contenu dans des Unité d'organisation qu'on a  créée dans un fichier csv vers exchange 2010 afin de pouvoir les gérées, je sais pas comment proceder, quelqu'un peut m'indiquer le chemin à suivre ou bien un tuto ? merci d'avance
    • Modifié zawadi vendredi 7 décembre 2012 21:23
    vendredi 7 décembre 2012 21:19

Réponses

  • Import-CSV -Delimiter ';' moncsv.csv
    lundi 10 décembre 2012 12:09
    Modérateur
  • Bonsoir,

    les éléments "ID, nom, prénom,..." ne sont pas, j'imagine, un gros problème. La seule difficulté pourrait consister à devoir créer les Unités d'organisations qui seraient définies dans le fichier CSV et qui n'existeraient pas encore.

     import-csv c:\temp\contacts.csv | foreach {new-mailcontact -name $_.name -externalEmailAddress $_.externalEmailAddress -firstname $_.Firstname -lastname $_.lastname -organizationalUnit $_.OrganizationalUnit}

    Name                      Alias                                          RecipientType
    ----                      -----                                          -------------
    Jacques HAMEZ             JacquesHAMEZ                                   MailContact

    Voici le contenu du fichier Contacts.csv

    OrganizationalUnit,FirstName,LastName,Name,ExternalEmailAddress
    deman.local/Contacts,Jacques,HAMEZ,Jacques HAMEZ,jhamez@free.fr

    A bientôt,


    Thierry DEMAN. Exchange MVP. MCSA Windows Server 2012 (73 MCPs). https://mvp.support.microsoft.com/profile=CE2B565B-B13D-4C24-B04D-F0D5766D14A1 http://www.faqexchange.info

    • Marqué comme réponse Florin Ciuca lundi 10 décembre 2012 14:41
    lundi 10 décembre 2012 00:17
    Modérateur

Toutes les réponses

  • Vous pouvez essayer ce type de commande :

    import-csv "nomdufichier.csv" | new-mailcontact

    Dans l'aide de la commande new-mailcontact (help new-mailcontact -full) vous pourrez voir les parametres qui prennent des arguements par le pipeline. Si dans le fichier CSV une colonne math avec le nom d'un argument, la valeur sera utilisée.

    Si les arguements ne peuvent pas passer par le pipeline, vous utiliserez ce type de commande :

    import-csv monfichier.csv | foreach { new-mailcontact -Identity $_.identity -monparam1 $_.colonne1 -monparam2 $_.colonne3 }
    $_ correspond à l'objet actuellement passé, $_.colonne1 permet d'accéder à la valeur de l'attribut colonne1 dans l'objet.

     

    samedi 8 décembre 2012 13:59
    Modérateur
  • Merci bcp de votre réponse

    je vais essayer ce script  que tu me dit ! mais je te montre aussi ceque j'ai fait.

    voici ce que j'ai fait comme procédure :

    1) J'ai creer le fichier csv à l'aide du fichier excel qui contient les nom des contacts, département, fonctions,Identifiant, Location.

    2) je devais créer le script  pour récupérer mon fichier CSV ( mais j'y arrive pas ca me donne de erreur aide stp ) 

    samedi 8 décembre 2012 16:46
  • Bonjour! j'ai essayé le script en personnalisant avec mes paramétrés mes toujours ca marche pas,

    au j'ai deux sites S1 et S2 geré par le mem Server Exch et dans chaque site un Utilisateur est défini par un ID,un nom un prénom, Département,Fonction , Location

    je dois faire le script pour qu'à l’exécution sur powershell chaque utilisateur soit affécté les meme paramètres telque definis dans le fichier csv que je dois importer ! merci de me guider

    dimanche 9 décembre 2012 09:57
  • Bonsoir,

    les éléments "ID, nom, prénom,..." ne sont pas, j'imagine, un gros problème. La seule difficulté pourrait consister à devoir créer les Unités d'organisations qui seraient définies dans le fichier CSV et qui n'existeraient pas encore.

     import-csv c:\temp\contacts.csv | foreach {new-mailcontact -name $_.name -externalEmailAddress $_.externalEmailAddress -firstname $_.Firstname -lastname $_.lastname -organizationalUnit $_.OrganizationalUnit}

    Name                      Alias                                          RecipientType
    ----                      -----                                          -------------
    Jacques HAMEZ             JacquesHAMEZ                                   MailContact

    Voici le contenu du fichier Contacts.csv

    OrganizationalUnit,FirstName,LastName,Name,ExternalEmailAddress
    deman.local/Contacts,Jacques,HAMEZ,Jacques HAMEZ,jhamez@free.fr

    A bientôt,


    Thierry DEMAN. Exchange MVP. MCSA Windows Server 2012 (73 MCPs). https://mvp.support.microsoft.com/profile=CE2B565B-B13D-4C24-B04D-F0D5766D14A1 http://www.faqexchange.info

    • Marqué comme réponse Florin Ciuca lundi 10 décembre 2012 14:41
    lundi 10 décembre 2012 00:17
    Modérateur
  • Merci infiniment de vos réponses . Voici un capture de mon écran après exécution de mon suivant :

    Import-CSV “C:\1DECIPLEX_Employees.csv”
     | foreach { New-Mailcontact –ID $_.id –Firstname $_.firstname –Lastname $_.lastname 
    –Location $_.location –Departement $_.departement –fonction $_.fonction
    
    }
    

    voici  mon fichier CSV

    ID;Firstname;Lastname;Location;Department;Function
    1;Althea;Klutts;Paris;Manager;CEO
    2;Hugh;Donelan;Paris;Manager;HR Manager
    3;Roxie;Clouser;Paris;Manager;Business Development Manager
    4;Marylou;Lukasiewicz;Paris;Marketing;Manager
    5;Darren;Faulks;Paris;Marketing;Manager




    lundi 10 décembre 2012 05:42
  • Voici  les erreurs après execution (capture )

    [PS] C:\Windows\system32> | foreach { New-Mailcontact -ID $_.id -Firstname $_.firstname -Lastname $_.lastname
    Au caractère Ligne:1 : 2
    +  | foreach { New-Mailcontact -ID $_.id -Firstname $_.firstname -Lastname $_.last ...
    +  ~
    Un élément de canal vide n'est pas autorisé.
    Au caractère Ligne:1 : 12
    +  | foreach { New-Mailcontact -ID $_.id -Firstname $_.firstname -Lastname $_.last ...
    +            ~
    Accolade fermante « } » manquante dans le bloc d'instruction.
        + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
        + FullyQualifiedErrorId : EmptyPipeElement

    [PS] C:\Windows\system32>-Location $_.location -Departement $_.departement -fonction $_.fonction
    -Location : Le terme «-Location» n'est pas reconnu comme nom d'applet de commande, fonction, fichier de script ou
    programme exécutable. Vérifiez l'orthographe du nom, ou si un chemin d'accès existe, vérifiez que le chemin d'accès
    est correct et réessayez.
    Au caractère Ligne:1 : 1
    + -Location $_.location -Departement $_.departement -fonction $_.fonction
    + ~~~~~~~~~
        + CategoryInfo          : ObjectNotFound: (-Location:String) [], CommandNotFoundException
        + FullyQualifiedErrorId : CommandNotFoundException

    [PS] C:\Windows\system32>
    [PS] C:\Windows\system32>}
    lundi 10 décembre 2012 05:46
  • Par défaut les CSV exchange sont des "coma separated value", donc séparé par des virgules, alors qu'excel crée des CSV avec des ; (point virgule)

    Soit transformer les ; en ,

    Ou lors Import-CSC -Delimiter ';'

    De même si vous pouvez, enregistrer les fichiers en UTF8 ou Unicode, et pas en ANSI, vous aurez des problèmes avec certains accents et autres caractères à la française.


    lundi 10 décembre 2012 09:23
    Modérateur
  • Merci bcp de vos conseils; evidement c'est mes parametres sont separés par des point virgules au lieu de virgules, j'ai essayer d'enregistré sous d'autre format(text, csv (dos) mais ca ne vient toujours pas avec des virgules . qu'est-ce que je dois faire pour que ça soit separé par des virgules? est-ce que c'est à cause des point virgules que mon script ne passe pas?  Merci encore !
    lundi 10 décembre 2012 10:54
  • Import-CSV -Delimiter ';' moncsv.csv
    lundi 10 décembre 2012 12:09
    Modérateur