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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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

Discussions similaires

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

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