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 :

[VBS] erreur dans mon script "création d'utilisateur AD"


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Points : 15
    Points
    15
    Par défaut [VBS] erreur dans mon script "création d'utilisateur AD"
    Bonjour à tous,


    Débutant en vbs, j'ai créer un script pour créer des utilisateurs dans l'active directory à partir d'un fichier csv. Je me suis servis pour m'aider de fonction et autre à partir de documentation que j'ai pu trouver

    voici mon code :

    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
    Dim fso
    Dim fichier
    Dim Ligne
    Dim v
    Dim complet, account, login, nom, prenom, display
     
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set fichier = fso.OpenTextFile("c:\liste.csv", 1)
     
    Do While Not fichier.AtEndOfStream
      Ligne = fichier.Readline
      v = Split(Ligne, ",")
      Call Cree_Utilisateur(v(0), v(1), v(2), v(3), v(4), v(5))
    Loop
     
    Sub Cree_Utilisateur(complet, account, login, nom, prenom, display)
     
       'determine le chemin LDAP
       Set Root = GetObject("LDAP://RootDSE")
       DomainPatch = Root.Get("DefaultNamingContext")
     
       'Indique l'OU de l'utilisateur
       Set chemin = GetObject("LDAP://OU="&Informatique &","& DomainPath)
     
       'Crée l'utilisateur dans l'OU
       Set User = chemin.Create("user", "CN=" & complet)
     
        'Définit le nom d'ouverture de session
        User.Put "sAMAccountName", account
        ' Nom d'ouverture de session
        User.Put "userPrincipalName", login
        ' Nom d'usage
        User.Put "sn", nom
        ' Prénom
        User.Put "givenName", prenom
        ' Nom affiché
        User.Put "displayName", display
        ' Active le compte
        User.AccountDisabled = False
    	User.SetInfo
     
     
    End Sub
    j'ai une erreur sur la ligne "Set chemin = GetObject("LDAP://OU="&Informatique &","& DomainPath)" et je n'arrive pas à débugger. J'ai l'impression qu'il ne trouve pas mon OU informatique dans mon ad

    Comment puis-je faire pour résoudre mon problème?



    Cordialement



    Stefdu59

  2. #2
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2009
    Messages : 24
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    je suis novice mais en regardant un peu sur le net j ai trouvé sa :

    "Si l'arborescence est



    Production

    ---- Production Users

    --------Users ALM



    la ligne doit être :

    Set ou_HR = GetObject("LDAP://OU=Users ALM,OU=Production Users, OU=Production, " & DomainPath)
    "


    la ref du site : http://social.technet.microsoft.com/...-4f88ad3417b5/

    Bonne journée

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2009
    Messages : 24
    Points : 22
    Points
    22
    Par défaut
    Je regarde ton code et je vois pas ou est défini ta variable Informatique

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Points : 15
    Points
    15
    Par défaut
    merci à toi pour le lien.

    problème résolu par "Set chemin = GetObject("LDAP://OU=Informatique," & DomainPath)"


    Mais j'en ai récupérer un autre :

    à la ligne "User.AccountDisabled = False" j'obtiens le code erreur "la propriété répertoire n'est pas présente dans le cache"

    est-ce dû au chemin de mon OU?


    edit : Informatique est le nom de mon OU où je désire mettre mon utilisateur, cette OU est deja créer dans mon AD

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2009
    Messages : 24
    Points : 22
    Points
    22
    Par défaut
    Voici un nouveau lien que je te conseil fortement : http://eric.machabert.free.fr/docs/tuto.doc

    comme j ai pas windows en ce moment je peut pas faire de test donc trouver l erreur
    voici ce que j ai trouve :
    Code Ecrit par Eric MACHABERT : 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
    Function ajout_util(arg_nom,arg_prenom,arg_service,arg_fonction,arg_pass)
    	Set conteneur = GetObject("LDAP://OU=" & arg_service & ",DC=etoilenoire,DC=local")
    	Set utilisateur = conteneur.Create("user", "CN=" & arg_nom & " " & arg_prenom)
    	utilisateur.Put "SAMAccountName", arg_nom & " " & arg_prenom
    	utilisateur.SetInfo
    	utilisateur.Put "userPrincipalName", arg_nom & "." & arg_prenom & "@etoilenoire.local"
    	utilisateur.Put "sn", arg_nom
    	utilisateur.Put "givenName", arg_prenom
    	utilisateur.Put "displayName", arg_nom & " " & arg_prenom
    	utilisateur.Put "description", arg_fonction & " du service " & arg_service
    	utilisateur.Put "mail", arg_nom & "." & arg_prenom & "@etoilenoire.local"
    	utilisateur.Put "department", arg_service
    	utilisateur.Put "title", arg_fonction
    	utilisateur.Put "scriptpath", service & ".bat" 
    	utilisateur.Put "homeDirectory", "\\serveur.etoilenoire.local\perso\" & arg_service & "\" & arg_nom & "$"
    	utilisateur.SetInfo
    	utilisateur.AccountDisabled = False
    	utilisateur.SetPassword arg_pass
    	utilisateur.Put "userAccountControl",ADS_UF_DONT_EXPIRE_PASSWD
    	utilisateur.SetInfo
    	utilisateur.AccountExpirationDate = "01/01/2008"
    	utilisateur.SetInfo
    	ajout_util_groupe arg_fonction,arg_service,arg_nom,arg_prenom
    	set conteneur = nothing
    	set utilisateur = nothing
    End Function

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Points : 15
    Points
    15
    Par défaut
    faut que je revois ma méthode recherche lol

    merci à toi

    aprés modification de mon script juste en remplaçant le sub par function, je récupère la même erreur : "la propriété répertoire n'est pas présente dans le cache" à cause de la ligne User.AccountDisabled = False

    code modifié :

    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
    Option Explicit
     
    Dim fso
    Dim fichier
    Dim Ligne
    Dim v
    Dim complet, account, login, nom, prenom, display
     
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set fichier = fso.OpenTextFile("c:\liste.csv", 1)
     
    Do While (Not fichier.AtEndOfStream)
      Ligne = fichier.Readline
      v = Split(Ligne, ",")
      Cree_Utilisateur v(0), v(1), v(2), v(3), v(4), v(5)
     
    Loop
     
    Function Cree_Utilisateur(complet, account, login, nom, prenom, display)
     
    	'determine le chemin LDAP
       Dim Root
       Dim DomainPath
       Set Root = GetObject("LDAP://RootDSE")
       DomainPath = Root.Get("DefaultNamingContext")
     
       'Indique l'OU de l'utilisateur
       Dim chemin
       Set chemin = GetObject("LDAP://OU=Informatique," & DomainPath)
     
       'Crée l'utilisateur dans l'OU
       Dim User
       Set User = chemin.Create("user", "CN=" & complet)
     
     
        'Définit le nom d'ouverture de session
        User.Put "sAMAccountName", account
    	User.SetInfo
        ' Nom d'ouverture de session
        User.Put "userPrincipalName", login
        ' Nom d'usage
        User.Put "sn", nom
        ' Prénom
        User.Put "givenName", prenom
        ' Nom affiché
        User.Put "displayName", display
    	User.SetInfo
        ' Active le compte
        User.AccountDisabled = False
    	User.SetInfo
     
    End Function
    je pense donc que c'est à cause de ma fonction, j'ai donc fais des tests avec ma fonction : soit en regardant avec des messages box mes variables ou alors en la méttant dans un autre script et en modifiant mes variables (account etc..) par des valeurs définis.
    tout fonctionne bien donc je vois vraiment pas pourquoi j'ai cette erreur

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Points : 44
    Points
    44
    Par défaut
    Lut',
    Sauf erreur de ma part, les stratégies de sécurités par défaut sur un domaine 2003 ne tolère pas qu'un compte soit avec un mot de passe vide. Comme tu ne définis nul part de mot de passe sur tes comptes, j'en déduis que l'erreur peut éventuellement venir de là ...

    essai avec ce bout de code à la fin de ton 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
    'Définit le nom d'ouverture de session
        User.Put "sAMAccountName", account
    ' Nom d'ouverture de session
        User.Put "userPrincipalName", login
    ' Nom d'usage
        User.Put "sn", nom
    ' Prénom
        User.Put "givenName", prenom
    ' Nom affiché
        User.Put "displayName", display
        User.SetInfo
    ' Active le compte
        User.SetPassword "Un_Pa5s0rD"
        User.AccountDisabled = False
        User.SetInfo
    Et ne mets pas plus de "User.SetInfo" que je n'en ai mis. Chez moi, ce code fonctionne très bien.

    Pour finir, à ma connaissance, l'utilisation d'une fonction pour ce type d'action ne diffère en rien d'une procédure.
    La seule subtilité entre une Fonction ou une Procédure est qu'une Fonction peut te renvoyer un résultat alors qu'une Procédure en est incapable ...

    Si j'ai pu aidé...
    Emeric

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Points : 15
    Points
    15
    Par défaut
    Bonjour et merci de votre aide

    j'ai modifié mon code en suivant ce que tu as mis et j'ai toujours une erreur. Mon environnement est sous win serv 2008 et sous vmware pour effectuer mes tests.

    l'erreur se situe au niveau de la ligne "User.SetInfo" juste aprés le displayName. J'obtiens "un périphérique attaché au système ne fonctionne pas correctement"

    le plus bizare c'est que le bout de code de ma fonction fonctionne puisque j'arrive a créer un utilisateur mais dés que je l'utilise avec une boucle et par une lecture de fichier, cela ne fonctionne plus

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Points : 15
    Points
    15
    Par défaut rajout du code
    Mon script fonctionne, c'est juste mon fichier csv qui étais mal fais, j'avais mis des " en trop


    merci à tous pour votre aide


    Stefdu59

    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
    Option Explicit
     
    'déclaration des variables
    Dim fso
    Dim fichier
    Dim Ligne
    Dim v
    Dim complet, account, login, nom, prenom, display, password
     
    'détermine le fichier à ouvrir
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set fichier = fso.OpenTextFile("c:\liste.csv", 1)
     
    'boucle qui lis chaque ligne du fichier et qui stocke les informations dans un tableau
    Do While (Not fichier.AtEndOfStream)
      Ligne = fichier.Readline
      v = Split(Ligne, ",")
      Cree_Utilisateur v(0), v(1), v(2), v(3), v(4), v(5), v(6)
    Loop
     
    'fonction qui permet de créer l'utilisateur sous Active directory
    Function Cree_Utilisateur(complet, account, login, nom, prenom, display, password)
     
       'determine le chemin LDAP
       Dim Root
       Dim DomainPath
       Set Root = GetObject("LDAP://RootDSE")
       DomainPath = Root.Get("DefaultNamingContext")
     
       'Indique l'OU de l'utilisateur
       Dim chemin
       Set chemin = GetObject("LDAP://OU=Informatique," & DomainPath)
     
       'Crée l'utilisateur dans l'OU
       Dim User
       Set User = chemin.Create("user", "CN=" & complet)
     
        'Définit le nom d'ouverture de session
        User.Put "sAMAccountName", account
        ' Nom d'ouverture de session
        User.Put "userPrincipalName", login
        ' Nom d'usage
        User.Put "sn", nom
        ' Prénom
        User.Put "givenName", prenom 
        ' Nom affiché
        User.Put "displayName", display
        User.SetInfo
        'définit le mot de passe
        User.SetPassword password
        ' Active le compte
        User.AccountDisabled = False
        User.SetInfo
     
    End Function

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

Discussions similaires

  1. [VBS] Erreur dans mon script "Robocopy+share+ACL"
    Par tofju dans le forum VBScript
    Réponses: 19
    Dernier message: 27/05/2009, 12h03
  2. [phpMyAdmin] Erreur de syntaxe dans mon script de création
    Par piotrr dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 18/08/2008, 15h45
  3. Dessin avec Imager.. erreur dans mon script
    Par Chekov dans le forum Modules
    Réponses: 2
    Dernier message: 18/06/2006, 14h14
  4. erreur dans mon script
    Par Swata dans le forum Langage
    Réponses: 4
    Dernier message: 21/09/2005, 00h02
  5. [langage]erreur dans mon script
    Par Fabouney dans le forum Langage
    Réponses: 11
    Dernier message: 30/06/2005, 14h58

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