Bonjour,

je sais que la question a ete posé plusieurs fois mais là je rame completement !

voila la situation :

mon script doit être adaptable sur n'importe quel AD, sans connaitre le nom de domaine par avance, donc je récupere le nom de domaine que je veux appliquer a mon script qui est le suivant :


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
ADS_UF_DONT_EXPIRE_PASSWD = &H10000
Set WshNetwork = WScript.CreateObject("WScript.Network")
Domaine = WshNetwork.UserDomain
 
set utilisateur = ToTo
 
set serveur = WshProcessEnv("COMPUTERNAME")  'je recupere le nom du serveur
 
Set conteneur = GetObject("LDAP://" & serveur , "DC=" & Domaine)
 
Set utilisateur = conteneur.Create("user", "CN=" & nomUtilisateur)
 
utilisateur.Put "description","Detail de mon user"
 
utilisateur.SetInfo
 
utilisateur.SetPassword "mot2P@sse"
 
utilisateur.Put "userAccountControl",ADS_UF_DONT_EXPIRE_PASSWD
 
utilisateur.SetInfo

mes questions :

- est-ce que ma ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 Set conteneur = GetObject("LDAP://" & serveur , "DC=" & Domaine)
est correcte ?

- pourquoi à votre avis la fonction pour le mot de passe qui ne doit pas expirer ne fonctionne pas ?

- a quoi sert exactement utilisateur.SetInfo ?

ben entendu, c'est set utilisateur = "ToTo"

ca non plus ca ne marche pas..


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
Option Explicit
Dim objRootLDAP, objContainer, objUser, objShell
Dim strUser, strName, strContainer
 
strUser = "toto"
strContainer = "OU=users ," 
 
' Bind to Active Directory, Users container.
Set objRootLDAP = GetObject("LDAP://nomduserveur")
Set objContainer = GetObject("LDAP://" & strContainer & objRootLDAP.Get("defaultNamingContext"))
 
' Build the actual User.
Set objUser = objContainer.Create("User", "cn=" & strUser)
objUser.Put "sAMAccountName", strUser
objUser.SetInfo
 
 
WScript.Quit