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

VBScript Discussion :

creer 300 contacts dans l'AD.


Sujet :

VBScript

  1. #1
    Membre confirmé

    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Par défaut
    Bonjour à tous,
    j'ai besoin d'automatiser la manip suivante: création de 300 contacts dans une UO de l'AD, à partir d'un fichier excel contenant toutes les propriétés de ces contacts.
    La particularité de ces contacts, c'est qu'ils possedent tous une adresse de messagerie de type SMTP

    un extrait de mon fichier excel:
    Prénom | Nom | Desc | Num tel | adresse Messagerie
    Toto | tata | ... | 0442..... | toto.tata@domaine.com

    Quelqu'un pourrait'il m'aider ?? en VBS ou en .NET, je ne manipule vraiment ni l'un ni l'autre, mais je touche un peu au VB et VBA. (ca sera l'occasion de m'y mettre!)

    Merci d'avance.

    Voila la base de mon script en VBS:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set objOU = GetObject("LDAP://OU=management,dc=fabrikam,dc=com")
     
    Set objUser = objOU.Create("contact", "cn=MyerKen")
    objUser.SetInfo
    Ce code sert a creer un contact nommé MyerKen dans l'OU management du domaine fabrikam.com

    1iere question : comment creer ce contact dans l'UO fournisseurs qui se trouve dans l'UO management ??

  2. #2
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    1iere question : comment creer ce contact dans l'UO fournisseurs qui se trouve dans l'UO management ??
    1- t'as essayé en mettant directement fournisseurs?
    Set objOU = GetObject("LDAP://OU=fournisseurs,dc=fabrikam,dc=com")
    2- puisque c'est inversement hiérachique, as tu testé??
    Set objOU = GetObject("LDAP://OU=fournisseurs,OU=management,dc=fabrikam,dc=com")

  3. #3
    Membre confirmé

    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Par défaut
    OK parfait c'était la 3ieme solution:
    Set objOU = GetObject
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ("LDAP://OU=fournisseurs,OU=management,dc=fabrikam,dc=com")
    Merci de ton aide, sinon 2ime question:
    comment remplacer les valeurs "MyerKen", "fabrikan", "com", "management", "fournisseurs" par les valeurs contenu dans des cellules excel (ou une base SQL, ou une base de donnée a plat (un fichier texte par ex)) ? sachant qu'il y a 300 lignes pour les 300 contacts que je souhaite créer ...
    J'imagine que l'on va passer par une boucle for aussi, d'ailleurs, quel en est la syntaxe en vbs ?

    merci de ton aide!

  4. #4
    Membre confirmé

    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Par défaut
    Ok pour la boucle for, j'ai fait un test ca marche, voici mon code qui prend forme:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Set objOU = GetObject("LDAP://OU=fournisseurs,OU=management,dc=domaine,dc=com")
     
    For i = 1 To 10
    	Set objUser = objOU.Create("contact", "cn=UserNo" & i)
    	objUser.SetInfo
    Next
     
    WScript.Echo "10 Users created."

    Le plus dur reste a faire : creer des variables qui vont chercher la valeur de chaque occurence dans une fichier excel, une base SQL server, ....
    Louis-Guillaume t'as pas une petite idée ???? :s

  5. #5
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    perso, je n'utilise jamais de script, je fais tout en language objet, je trouve ca plus simple.
    Ici, en premier lieu, j'ouvrirai mon fichier excel et je l'exporterais au format CSV et je parserait ce fichier csv depuis mon script vbs (je pense que ca sera plus simple ainsi) et il y a plein d'exemples sur le net
    http://www.google.fr/search?q=vbs+cs...ient=firefox-a

    pour le reste, je pense qu'il vaut mieux continuer cette discussion dans le forum vbscript

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    voir pour piloter excel :

    Comment piloter Excel pour créer un classeur.xls ?


    j'ai pas excel sous la main... donc faudra tester mais tu peu faire un truc du genre ..

    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
     
    Dim xlapp, classeur, maPlage,r
    Set xlapp = CreateObject("Excel.Application")
    xlapp.Visible = True 'Autant voir ce que l'on fait..
    Set classeur = xlapp.Workbooks.open("c:\tmp\test.xls") ' Mettre le bon nom de fichier
    set maPlage = Classeur.sheets(1).range("A1").currentRegion 
     
    'Parcours les lignes du fichier :
    For Each r in maPlage.rows
     'Affiche .. les données lues dans le fichier excel...
     Wscript.echo r.cells(1,1) & " | " & r.cells(1,2) & " | " r.cells(1,1)
    next
     
    classeur.close false 'Ferme sans sauver
    xlapp.quit ' quitte excel
    voilà pour le principe...

  7. #7
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Par défaut
    Salut,

    moi je me la jouerai comme ca :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    strComputer = "."
     
    Set objOU = GetObject("LDAP://OU=fournisseurs,OU=management,dc=domaine,dc=com")
     
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
     
    Set objExcel = CreateObject("Excel.Application")
    Set objWorkbook = objExcel.Workbooks.Open("Nom_du_Fichier.xls")
    objExcel.Visible = True
     
    i = 1
     
    Do Until objExcel.Cells(i, 1).Value = ""
        Prenom = objExcel.Cells(i, 1).Value
        Nom = objExcel.Cells(i, 2).Value
        Desc = objExcel.Cells(i, 3).Value
        .../...
     
        Set objUser = objOU.Create("User", "cn=" Nom & " " & Prenom)
        objUser.sAMAccountName = Left(Prenom, 1) & Nom 
        objUser.GivenName = Prenom 
        objUser.SN = Nom
        objUser.Description = Desc 
        .../...
     
        objUser.SetInfo
     
        i = i + 1
    Loop
    qu'en pensez vous ?

    A++

  8. #8
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par RadPAT Voir le message
    ...
    qu'en pensez vous ?
    ..
    cela change pas "grand-chose" à la méthode que j'ai exposé plus haut....

    mais finalement en y repensant .. si les données initiales sont dans une feuille excel .. c'est peu-être plus simple.. de traiter le tout par du code VBA à intégrer au classeur... un seul fichier, plus facile à "débugger"...

  9. #9
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Par défaut
    Citation Envoyé par bbil Voir le message
    cela change pas "grand-chose" à la méthode que j'ai exposé plus haut....
    ...sauf que plutot que d'afficher les zones à l'écran je les claque dans l'AD et que sauf erreur c'était la demande initiale de notre ami tomo0013

    A++

  10. #10
    Membre confirmé

    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Par défaut
    C0000l!
    merci a vous tous pour tout ces codes!
    je m'y met cet aprem, j'ai tous les éléments en main la... Sauf peu etre un dernier ... comment j'ajoute une adresse de type SMTP à ce contact ?? :s
    j'ai farfouillé sur le scriptcenter du technet de microsoft, mais j'ai pas trouvé :s

  11. #11
    Membre confirmé

    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Par défaut
    Attention:
    C'est 300 contacts, et pas 300 Utilisateurs!

  12. #12
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Par défaut
    Salut,

    Citation Envoyé par tomo0013 Voir le message
    Attention:
    C'est 300 contacts, et pas 300 Utilisateurs!
    c'est pas grave c'est le même principe sauf que tu mettras :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Set objContact = objOU.Create("Contact", "cn=" Nom & " " & Prenom)
    objContact.Description =  Description
    objContact.Mail = Prenom & "." & Nom & "@domaine.Com"
    objContact.SetInfo
     
    i = i + 1
    Voilà,

    A++

    Voici un lien qui explique tout ca :
    http://www.computerperformance.co.uk...act_create.htm

  13. #13
    Membre confirmé

    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Par défaut
    bon ben je crois que la j'ai vraiment tous les éléments pour faire mon script!!!
    des que ca tourne correctement, je le poste sur le forum et je tag la discution!

    Merci encore à tous.

  14. #14
    Membre confirmé

    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Par défaut
    Rebonjour à tous,
    voici mon script qui fonctionne sauf que j'ai encore un petit souci ...
    Script:

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    ' Creer un ensemble de contact dans une UO de l'AD à partir d'un fichier excel.
    ' Thomas LEONARDI - SI d'H3M.
    ' 23/11/2007
    ' --------------------------------------------------------------' 
     
    Option Explicit
    'Dim objRootLDAP         '
    'dim objContainer        '
    dim objContact           '
    dim objExcel             'mon objet de type fichier excel (tres général)
    dim objSheet             'mon objet qui est une feuille excel pointant vers l'emplacement du bon fichier
    Dim objOU                'mon OU qui est un : Objet de classe OU
    dim strContactName       'var contenant le nom du contact a un instant introw, exemple de nom : "1010 - MARSEILLE"
    dim strPathExcel         'Chemin UNC (ou local) du # excel
    dim strEmail             'var contenant le mail d'un magasins a un instant introw
    Dim intRow               'c'est le i qui va parcourir toutes les occurences du # excel
    dim strYourDescription   'description des magasins
     
     
    ' mise en place des variables
    ' Note: Assume an OU called suppliers exists.
    'strOU = "OU=H3M, " ' Note the comma
    strPathExcel = "\\h3msbs2003\distrib$\contactmag.xls"
    strYourDescription = "Contact Magasin"
    intRow = 2 ' Début des data à la ligne 2 (la ligne 1 contient les noms de champs)
     
    ' mise en place des var de connexion a l'AD + connexion a l'AD
    Set objOU = GetObject("LDAP://OU=H3M,dc=h3msbs,dc=lan")
     
     
    ' Ouverture du fichier excel
    Set objExcel = CreateObject("Excel.Application")
    Set objSheet = objExcel.Workbooks.Open(strPathExcel)
     
    ' Ma boucle principale
    Do Until (objExcel.Cells(intRow,1).Value) = "" 'on boucle tant que la valeur de la cellule A, introw (ce dernier varie) n'est pas nulle
       strContactName = objExcel.Cells(intRow, 1).Value & " - " & objExcel.Cells(intRow, 2).Value
       strEmail = objExcel.cells(intRow, 10).Value
       ' Création du contact de la introw ieme ligne
       Set objContact = objOU.Create("contact", "cn=" & strContactName)
       objContact.Put "Mail", strEmail
       objContact.put "Description", strYourDescription
       'objContact.Put "givenName", strFirst   je ne me sers pas de cette propriété
       'objContact.Put "sn", strLast           je ne me sers pas de cette propriété
       objContact.SetInfo 
    intRow = intRow + 1 'Incrémentation
    Loop
    objExcel.Quit 
    WScript.Echo "Contact created." 'boit de dial
    WScript.Quit
    Petit souci:
    mes contacts sont bien créés au bon emplacement. le probleme ce situe au niveau de leur adresse mail. En effet, la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objContact.Put "Mail", strEmail
    creer le mail dans la propriété "adresse de messagerie", de l'onglet "général" du contact, voir ci-dessous:




    Or ce que je souhaiterai, c'est avoir ceci (manip manuelle, l'image 4 est le résultat de la manip)


    quelqu'un a t'il le code pour creer une adresse SMTP a partir d'une tache exchange en VBS ???

  15. #15
    Membre confirmé

    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Par défaut
    je pense avoir trouver un début de solution:
    http://www.computerperformance.co.uk...t_exchange.htm

    des que j'en sais plus, je poste la soluce!

    (mais je suis prenneur pour une petite aide a traduire ce nouveau code )

  16. #16
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Par défaut
    Salut,

    je suis sous Domino et je ne connais pas Exchange, par contre j'ai un autre lien qui confirme to précedent :

    http://www.petri.co.il/forums/archiv...p/t-17911.html

    il semblerait bien que ce soit la zone "proxyAddresses" que tu doives attaquer.

    Bons tests.

    A++

  17. #17
    Membre confirmé

    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Par défaut
    voici une partie du script deu site que j'ai posté ce matin (http://www.petri.co.il/forums/archiv...p/t-17911.html) :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    ' ExchContact.vbs
    ' Purpose VBScript to create a contact for Exchange 2003
    ' Author Guy Thomas http://computerperformance.co.uk/
    ' Version 2.4 - August 2005
    ' --------------------------------------------------------------' 
     
    Option Explicit
    Dim objRootLDAP, objContainer, objContact, objExcel, objSheet
    Dim strOU, strContactName, strPathExcel, strEmail, strProxy
    Dim intRow, strYourDescription, strFirst, strLast, strMainDefault
    Dim strMailbox, strNick
     
    ' Set string variables
    ' Note: Assume an OU called suppliers exists.
    strOU = "OU=Suppliers ," ' Note the comma
    strYourDescription = "Guy's Contact"
    strMainDefault = "SMTP:acmeMain@acme.com"
    strContactName="MrAcme"
    strFirst = "Willy"
    strLast= "Acme"
    strProxy = "smtp:somebody@somewhereElse.com"
    strEmail = "not@needed.org"
    ' ** Please investigate your Exchange Org, then change the next line **
    strMailbox = "/o=GuyWorld/ou=First Administrative Group/cn=Recipients/cn="_
    & strContactName
    strNick = strContactName
     
    ' Section to bind to Active Directory
    Set objRootLDAP = GetObject("LDAP://rootDSE")
    Set objContainer = GetObject("LDAP://" & strOU _
    & objRootLDAP.Get("DefaultNamingContext")) 
     
    ' Build the actual contacts.
    Set objContact = objContainer.Create("Contact",_
    "cn=" & strContactName)
    objContact.Put "Mail", strEmail
    objContact.Put "givenName", strFirst
    objContact.Put "sn", strLast
    objContact.Put "proxyAddresses", strProxy
    objContact.Put "targetAddress", strMainDefault
    objContact.Put "legacyExchangeDN", strMailbox
    objContact.Put "mailNickname", strNick
    objContact.SetInfo 
     
    WScript.Quit

    Je le capte a peu pres, excepté cette ligne (que l'on doit modifié et approprié a notre propre serveur Exchange)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ' ** Please investigate your Exchange Org, then change the next line **
    strMailbox = "/o=GuyWorld/ou=First Administrative Group/cn=Recipients/cn="_
    & strContactName
    ca veut dire quoi exactement? ou je trouve ces informations ?

  18. #18
    Membre confirmé

    Inscrit en
    Juillet 2005
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 195
    Par défaut
    Voici enfin mon script fini et fonctionnel:


    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    ' Creer un ensemble de contact dans une UO de l'AD à partir d'un fichier excel.
    ' Thomas LEONARDI - SI d'H3M.
    ' 23/11/2007
    ' --------------------------------------------------------------' 
     
    Option Explicit
    'Dim objRootLDAP         '
    'dim objContainer        '
    dim objContact           '
    dim objExcel             'mon objet de type fichier excel (tres général)
    dim objSheet             'mon objet qui est une feuille excel pointant vers l'emplacement du bon fichier
    Dim objOU                'mon OU qui est un : Objet de classe OU
    dim strContactName       'var contenant le nom du contact a un instant introw, exemple de nom : "1010 - MARSEILLE"
    dim strPathExcel         'Chemin UNC (ou local) du # excel
    dim strEmail             'var contenant le mail d'un magasins a un instant introw
    Dim intRow               'c'est le i qui va parcourir toutes les occurences du # excel
    dim strYourDescription   'description des magasins
    dim Proxyadr
    dim strMailBox
    dim strNick
     
     
    ' mise en place des variables
    ' Note: Assume an OU called suppliers exists.
    'strOU = "OU=H3M, " ' Note the comma
    strPathExcel = "\\h3msbs2003\distrib$\contactmag.xls"
    strYourDescription = "Contact Magasin"
    intRow = 2 ' Début des data à la ligne 2 (la ligne 1 contient les noms de champs)
     
    ' mise en place des var de connexion a l'AD + connexion a l'AD
    Set objOU = GetObject("LDAP://OU=Magasins,OU=H3M,dc=h3msbs,dc=lan")
     
     
    ' Ouverture du fichier excel
    Set objExcel = CreateObject("Excel.Application")
    Set objSheet = objExcel.Workbooks.Open(strPathExcel)
     
    ' Ma boucle principale
    Do Until (objExcel.Cells(intRow,1).Value) = "" 'on boucle tant que la valeur de la cellule A, introw (ce dernier varie) n'est pas nulle
       strEmail = "SMTP:" & objExcel.cells(intRow, 10).Value
       strContactName = "ZZ - " & objExcel.Cells(intRow, 1).Value & " - " & objExcel.Cells(intRow, 2).Value
       strMailBox = "/o=First Organization/ou=first administrative group/cn=Recipients/cn=" & objExcel.Cells(intRow, 2).Value
       strNick = objExcel.cells(intRow, 1).Value
       ' Création du contact de la introw ieme ligne
       Set objContact = objOU.Create("contact", "cn=" & strContactName)
       objContact.put "givenName", strContactName
       objContact.Put "Mail", strEmail
       objContact.put "targetAddress", strEmail
       objContact.put "legacyExchangeDN", strMailBox
       objcontact.put "mailnickname", strContactName
       objContact.SetInfo 
    intRow = intRow + 1 'Incrémentation
    Loop
    objExcel.Quit 
    WScript.Echo "Contact created." 'boit de dial
    WScript.Quit
    Merci à vous tous pour votre aide.

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

Discussions similaires

  1. creer un contact dans autres contacts
    Par will Igetit dans le forum VBA Outlook
    Réponses: 3
    Dernier message: 21/11/2008, 13h08
  2. Comment creer une application dans une dll
    Par Aiekick dans le forum MFC
    Réponses: 2
    Dernier message: 05/03/2006, 14h05
  3. [wxpython] creer deux panel dans une frame
    Par hysah dans le forum wxPython
    Réponses: 3
    Dernier message: 27/12/2005, 18h21
  4. Creer une boucle dans une requête ???
    Par fdloisel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/10/2004, 14h05

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