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] VBScript + Active Directory : Quelques manipulations


Sujet :

VBScript

  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 9
    Par défaut [VBS] VBScript + Active Directory : Quelques manipulations
    Bonjour tout le monde.

    Je viens ici en quête d'une précieuse aide quant à la production d'un script en VBScript afin de créer et positionner des utilisateurs Active Directory dans le bon OU.

    Je viens d'une formation Réseau, et le script n'est pas ma grande passion, loin de là (et des fois "malheureusement" ...), mais pour les besoins de ma boite, j'ai le devoir de créer un tel script.

    En clair, voici ma requête :

    Il me faudrait un vbscript, ou des bouts de code vbscript afin de créer un utilisateur dans un Active Directory sours Win 2008 R2 et le place dans le bon OU.

    Le script doit demander le Nom & Prénom de l'utilisateur à rentrer. En découlera son nom d'ouverture de session en "prénom.nom" ainsi que son mot de passe en "prénomnom". Son mot de passe n'expire jamais et doit être changé à la première ouverture de session.

    L'appel du nom/prénom se fera par des inputbox je suppose.

    Ensuite l’utilisateur devra être déplacé dans l'OU -> +domaine -> +clients.

    Pouvez-vous m'apporte une aide afin de créer ce script ?

    Je vous remercie d'avance !

    Cordialement,
    Valentin.

  2. #2
    Membre émérite Avatar de cubitus91
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 726
    Par défaut
    Bonjour Valentin,

    Je me suis permi de commencer ton besoin, mais comme le but n'est pas forcement que nous fassions tout, il te reste des choses à finir.
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Création d'utilisateur Active Directory</title>
    <Style>
    Body {Background-Color: CornSilk} 
    </Style> 
    <script language="vbscript">
    Option Explicit
    Const cstOrganizationUnitName = "Clients"
    Const cstDomainName = "@developpez.net"
    'a ne pas changer
    Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000
    Sub Window_onLoad
        window.resizeTo 400,250
    End Sub
    Private Sub CreateADUser()
    'Local Var
    Dim ObjRoot,ObjDomain,ObjUser,strDisplayName
    Dim strName,strFirstName
    Set ObjRoot = GetObject("<a href="ldap://rootDSE" target="_blank">ldap://rootDSE</a>")
    Set ObjDomain = GetObject("<a href="ldap://OU" target="_blank">ldap://OU</a> ="& cstOrganizationUnitName & "," & ObjRoot.Get("defaultNamingContext"))
    strDisplayName = strName & " " & strFirstName & cstDomainName
    If ((NomUtilisateur.value <> "") And (PrenomUtilisateur.value <> "")) Then 
     strName = PrenomUtilisateur.value
     strFirstName = NomUtilisateur.value
     Set ObjUser = ObjDomain.Create("User", "cn="& strName & " " & strFirstName)
      ObjUser.Put "givenName",strFirstName
      ObjUser.Put "sn",strName 
      ObjUser.Put "sAMAccountName", strName & "." & strFirstName
      ObjUser.Put "Description", "Utilisateurs " & strName & " " & strFirstName
      ObjUser.Put "displayName", strName & " " & strFirstName 
      ObjUser.Put "userPrincipalName", strDisplayName
      ObjUser.SetInfo
      ObjUser.SetPassword (strName & strFirstName)
      ObjUser.AccountDisabled = False
      ObjUser.put "PwdLastSet", 0
      ObjUser.Put "userAccountControl", ADS_UF_DONT_EXPIRE_PASSWD
      ObjUser.SetInfo
      Else 
      MsgBox("Merci de vérifier le nom et le prénom")
    End If 
     Set ObjRoot = Nothing 
     Set ObjDomain = Nothing
     DataArea.innerhtml = "Success, Check Active Directory Users and Computers - Remember F5"
    End Sub 
    </script>
    <hta:application
     applicationname="MyHTA" 
     border="dialog"
     borderstyle="normal"
     caption="My HTML Application"
     contextmenu="no"
     icon="myicon.ico"
     maximizebutton="no"
     minimizebutton="yes"
     navigable="no"
     scroll="no"
     selection="no"
     showintaskbar="no"
     singleinstance="yes"
     sysmenu="yes"
     version="1.0"
     windowstate="normal"
    >
    </head>
    <body>
    <p><h3 align = Left><font color='Blue'>Création d'Utilisateur Active Directory</font></h3>
    <div></div>
    <div>
    Nom de l'utilisateur: <Input Type = "Text" Name = "NomUtilisateur">
    </div>
    <div>
    Prénom de l'utilisateur: <Input Type = "Text" Name = "PrenomUtilisateur">
    </div>
    <br>
    <div align="center">
    <Input Type = "Button" Value = "Create User"  align="center" Name = "Run_Button" onClick = "CreateADUser"><P>
    </div>
    <Span Id = "DataArea"></Span>
     
    </body>
    </html>
    il faut le copier dans un fichier texte tout en changeant l'extension en ".hta".

    Si tu regardes un peu le script tu verras que tu as deux constantes que tu peux changer.
    cstOrganizationUnitName = nom de l'OU pour tes utilisateurs.
    cstDomainName = Nom de domaine des utilisateurs, par exemple "@microsoft.com"

    Il te reste à faire la vérification que l'utilisateur n'est pas existant avant de vouloir en créer un. Et la gestion des erreurs en vbs. Je te laisse chercher sur google des informations à ce sujet.
    Au besoin n'hesite pas à poser des questions sur le forum.
    Cordialement

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 9
    Par défaut
    Bonjour cubitus91, et un grand merci pour ton aide.

    Ton script est très pointu, et je suis en train d'en développer un en parallèle uniquement en .vbs en m'aidant du tient.

    Seulement je but sur la commande qui me permettrait d'indiquer le domaine avec le nom d'ouverture de session. Peux-tu m'aider ?

  4. #4
    Membre émérite Avatar de cubitus91
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 726
    Par défaut
    Citation Envoyé par valentin_55 Voir le message
    Bonjour cubitus91, et un grand merci pour ton aide.

    Ton script est très pointu, et je suis en train d'en développer un en parallèle uniquement en .vbs en m'aidant du tient.

    Seulement je but sur la commande qui me permettrait d'indiquer le domaine avec le nom d'ouverture de session. Peux-tu m'aider ?

    hello,
    l'insertion du code à merdouiller, donc je te met uniquement la partie vbs.

    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
    Const cstOrganizationUnitName = "Clients"
    Const cstDomainName = "@[Domain].[Extension]"
    'a ne pas changer
    Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000
     
    CreateADUser "Nom","Prenom"
     
    Private Sub CreateADUser(strName,strFirstName)
    'Local Var
    Dim ObjRoot,ObjDomain,ObjUser,strDisplayName
    Set ObjRoot = GetObject("<a href="ldap://rootDSE" target="_blank">ldap://rootDSE</a>")
    Set ObjDomain = GetObject("<a href="ldap://OU" target="_blank">ldap://OU</a> ="& cstOrganizationUnitName & "," & ObjRoot.Get("defaultNamingContext"))
    strDisplayName = strName & " " & strFirstName & cstDomainName
    Set ObjUser = ObjDomain.Create("User", "cn="& strName & " " & strFirstName)
    ObjUser.Put "givenName",strFirstName
    ObjUser.Put "sn",strName 
    ObjUser.Put "sAMAccountName", strName & "." & strFirstName
    ObjUser.Put "Description", "Utilisateurs " & strName & " " & strFirstName
    ObjUser.Put "displayName", strName & " " & strFirstName 
    ObjUser.Put "userPrincipalName", strDisplayName
    ObjUser.SetInfo
    ObjUser.SetPassword (strName & strFirstName)
    ObjUser.AccountDisabled = False
    ObjUser.put "PwdLastSet", 0
    ObjUser.Put "userAccountControl", ADS_UF_DONT_EXPIRE_PASSWD
    ObjUser.SetInfo
     
    Set ObjRoot = Nothing 
    Set ObjDomain = Nothing
    WScript.Echo "Success, Check Active Directory Users and Computers - Remember F5"
    End Sub
    Par rapport à test deux questions:
    d'indiquer le domaine : dans quel cas, pour la connexion à l'AD ?
    Si oui regarde le résultat de la commande suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set ObjRoot = GetObject("<a href="ldap://rootDSE" target="_blank">ldap://rootDSE</a>")
    WScript.Echo ObjRoot.Get("defaultNamingContext")
    Pour ta deuxième question :
    regarde l'attribut userprincipalName
    cordialement

  5. #5
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 9
    Par défaut
    Re-bonsoir,

    Je ne suis pas au boulot, je ne peux pas te faire un screen avec mon script perso. Je te ferais ça demain.

    En fait, quand on créé un utilisateur à la main directement dans AD, on indique le domaine concernée à partir d'une liste déroulante (ici @sfa-asp.loc dans mon cas), et je veux pouvoir l'indiquer dans mon script, car actuellement cela reste "blanc".

    Merci d'avance !

  6. #6
    Membre émérite Avatar de cubitus91
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 726
    Par défaut
    Citation Envoyé par valentin_55 Voir le message
    Re-bonsoir,

    Je ne suis pas au boulot, je ne peux pas te faire un screen avec mon script perso. Je te ferais ça demain.

    En fait, quand on créé un utilisateur à la main directement dans AD, on indique le domaine concernée à partir d'une liste déroulante (ici @sfa-asp.loc dans mon cas), et je veux pouvoir l'indiquer dans mon script, car actuellement cela reste "blanc".

    Merci d'avance !
    hello,
    Alors c'est la constante cstDomainName dans mon script.
    Mais pour etre sur demain, un petit screen et ca sera le top.
    Cordialement

  7. #7
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 9
    Par défaut
    Bonjour,

    D'accord, c'est bien ce que je me disais. Mais comment le l'utilise dans mon script ?
    Comme ceci ? : objUSER.Put "cstDomainName", "@sfa-asp.loc"

    Voici mon 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
     
    Dim nom, prenom, mdp, monDC
     
    prenom=InputBox("Quel est le prénom de l'utilistateur ?", "Saisie utilisateur")
    nom=InputBox("Quel est le nom de l'utilistateur ?", "Saisie utilisateur")
    mdp=InputBox("Quel mot de passe voulez-vous affecter à l'utilistateur ?", "Saisie utilisateur")
     
    Set monDC=GetObject("LDAP://OU=TEST,DC=sfa-asp,DC=loc")
     
    Set objUSER = monDC.Create("User","CN=" & prenom & " " & nom)
    objUSER.Put "userPrincipalName", prenom
    objUSER.Put "samAccountName", prenom
    objUSER.Put "givenName", prenom
    objUSER.Put "sn", nom
    objUSER.Put "displayName", prenom & " " & nom
     
    ObjUSER.SetInfo
     
    if err.Number<>0 Then
    	WScript.Echo "Erreur" & Err.number & " - Impossible de mettre à jour AD"
    else
    	objUSER.SetPassword mdp
    	objUser.Put "pwdLastSet", 0
    	objUSER.AccountDisabled = False
    	objUSER.SetInfo
    	WScript.Echo "Création effectuée avec succès"
    End if
    Et voici les screens :


    Là, c'est création à la main, et le domaine est présent d'office.


    Là, c'est après une création avec mon script. Et le domaine n'est pas renseigné.

    Aussi, j'aimerais rajouter l'option "Le mot de passe n'expire jamais", mais je n'y arrive pas. Tu peux m'aider ?

    Merci d'avance

    ------------ EDIT ------------

    En fait, j'ai trouvé, J'aurais du être plus attentif à ton script !

    objUSER.Put "userPrincipalName", prenom & "@sfa-asp.loc"

    Merci

  8. #8
    Membre émérite Avatar de cubitus91
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 726
    Par défaut
    hello,
    je sais pas si tu as tout résolu, mais pour la question du mot de passe n'expire jamais :
    Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000

    ObjUser.Put "userAccountControl", ADS_UF_DONT_EXPIRE_PASSWD

    voila.

    Sinon pour le "userPrincipalName" tu as juste le prenom @"sfa-asp.loc" du coup ? tu as pas oublié le nom par hasard.
    Tout est ok now ?
    Cordialement

  9. #9
    Invité de passage
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1
    Par défaut Petit souci sur VBS aussi
    Bonjour à vous tous,

    Je suis également entrain de de faire une intégration de users (500) dans AD.

    J'ai fait mon script il fonctionne au 3/4. J'ai un .csv qui contient 4 colonne.
    1=Nom
    2=Prénom
    3=Mot de passe
    4= OU

    J'ai fait en sorte dans mon vbs d’être dans l'OU parent, il arrive à me créer les utilisateurs mais ne les mets pas dans la bonne OU et ne prend pas le mot de passe. Pourrirez-vous m'aider svp???
    Voici mon script et mon CSV.

    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
    51
    52
    53
    54
    55
    option explicit
     
    dim LDAPConnectString 
    dim Connection, InputFileName, FSO, TextFile, Count, User, Line, Cols 
    dim SamAccountName, CN, FirstName, LastName, UserPrincipalName
     
    on error resume next
     
    Const SuffixeUPN = "@labo.local" 
    Const CSVSeparator = ";"
    Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000 
    LDAPConnectString = "LDAP://ou=Utilisateurs,dc=labo,dc=local" 
    Set Connection = GetObject(LDAPConnectString)
     
    InputFileName = "IDE-01-.csv" 
    Count = 0
     
    set FSO = CreateObject("Scripting.FileSystemObject") 
    set textFile =  FSO.OpenTextFile(InputFileName,1)
     
    Do until textFile.AtEndOfStream
     
      Line = textfile.ReadLine 
      Cols = Split(Line, CSVSeparator) 
      Count = Count + 1 
      LastName = Trim(cols(0))'Nom
      FirstName = Trim(cols(1))'Prenom
      Pass = Trim(cols(2)) 'Mot de passe
      Ou = Trim(cols(3))
     
     
     
      SamAccountName = Lcase(LastName & Left(FirstName, 1)) 
      Set User = Connection.Create("User", "CN=" & LastName & " " & FirstName) 
      User.Put "displayName", LastName & " " & FirstName 
      User.Put "sAMAccountName", SamAccountName 
      User.Put "givenName", FirstName 
      User.Put "sn", LastName 
      User.Put "UserPrincipalName", SamAccountName & suffixeUPN 
      User.SetInfo 
      User.AccountDisabled = false 
      User.SetPassword (Pass)
      User.Put "userAccountControl", ADS_UF_DONT_EXPIRE_PASSWD
     
    Const UAC = 544
      User.SetInfo
     
    Loop
     
    wscript.echo "Opération Terminée. " & Count & " utilisateurs importés."   
     
    textFile.close 
    set Connection = nothing 
    set FSO = nothing 
    set textFile = nothing
    CSV:

    BEGU laurent 1234 Ide


    Merci d'avance de prendre du temps pour me répondre.

Discussions similaires

  1. Vbscript Active Directory Lister\Compter les ordinateurs
    Par vikingraver dans le forum VBScript
    Réponses: 2
    Dernier message: 02/07/2009, 16h10
  2. [VBS][Débutant] modification dans Active Directory
    Par _alex_ dans le forum VBScript
    Réponses: 1
    Dernier message: 12/05/2006, 23h52
  3. [VBS] Connexion à l'Active Directory
    Par romain_gil dans le forum VBScript
    Réponses: 6
    Dernier message: 10/04/2006, 17h46
  4. [VBS] recherche OU d'un utilisateur dans Active directory
    Par Amandine62 dans le forum VBScript
    Réponses: 7
    Dernier message: 16/02/2006, 09h42
  5. [VBS]Active directory et VBScript
    Par dibeloni dans le forum VBScript
    Réponses: 2
    Dernier message: 16/01/2006, 10h25

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