cs_baloc
Messages postés56Date d'inscriptionlundi 8 septembre 2008StatutMembreDernière intervention29 octobre 2010
-
30 déc. 2008 à 10:31
cs_baloc
Messages postés56Date d'inscriptionlundi 8 septembre 2008StatutMembreDernière intervention29 octobre 2010
-
31 déc. 2008 à 12:15
bien le bonjour à tous, et bonne fête.
je vous expose mon soucis.la création d'utilisateur dans l'ad en vba (oui je suis sadic^^)
Donc après quelque recherche je tombes sur ce que je veux réalisé (en gros j'ai coder)
mais la je reste bloquer sur un point non négligeable. j'ai l'impression qu'il ne valide pas mes données. avec plusieurs erreur de trouvé.
1ère: erreur Automation
le type d'attribut spécifié au service d'annuaire n'est pas défini.
cette erreur ce trouve au moment de la validation de mes premiers attributs
si je le laisse passé (vive l'apostrophe), j'ai ue 2ème erreur
erreur Automation
cette objet ne se trouve pas sur le serveur.
donc celui-ci doit correspondre au faite que je n'ai pas réussi à créer l'utilisateur. Allez pour ce mettre dans le bain je vais mettre mon piti bout de code.
<hr size="2" width="100%" /> Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
// je vais vous donnez plus d'information sur les variables.
//-txt1:nom
//-txt2:prenom
//-txt3:login
//-txt4:password
//-mod1:script de démarrage
//-mod2:site(les sites sont aussi les noms des OU)
/-lst2:memberof
//toute ses variable sont insérés depuis un formulaire sur access
Do While lst2.Value 'en ce qui concerne la boucle il y en a bien plus
'camon
If lst2.Value = "80_users" Then
If group = "" Then
group = "CN=" & lst2.Value & ",<lien situant le groupe rechercher>"
Else
group = group & ",CN=" & lst2.Value & ",<lien situant le groupe rechercher>"
End If
End If
Loop
objuser.setinfo //ici ce trouve l'erreur 1
objuser.memberof = group //ici il y a aussi une erreur mais ça je réglerais tout seul un if suffit.
objuser.SetPassword txt4.Value //ici c'est l'erreur 2
objuser.AccountDisabled = False //l'erreur 2 ce situe aussi ici
objuser.setinfo
End Sub
<hr size="2" width="100%" />voilà donc mon problème, un petit coup de pouce sera pas de refus...
mais comme ça m'empeche pas de chercher j'y retourne
cs_baloc
Messages postés56Date d'inscriptionlundi 8 septembre 2008StatutMembreDernière intervention29 octobre 2010 31 déc. 2008 à 12:15
rebonjour, je tiens à informer que j'ai bien trouver la solution qui se trouve ci dessous
je vais vous donnez plus d'information sur les variables.
-txt1:nom
-txt2:prenom
-txt3:login
-txt4:password
-mod1:script de démarrage
-mod2:site(les sites sont aussi les noms des OU)
-lst2:memberof
toute ses variable sont insérés depuis un formulaire sur access
<hr size="2" width="100%" />
~~~~~~~connexion à la base de donnée~~~~~~~~~~~~~~
Set objconn = CreateObject("ADODB.Connection") 'Création d'un objet pour la connexion
objconn.Provider = "ADsDSOObject" 'Définition du pilote de connexion
objconn.Open "Active Directory Provider" 'Ouverture de la base
Dim ttab() As String
~~~~~~~~~étant donnée que l'active directory possède une arborescence, lors de la création il faut bien définir le
~~~~~~~~~lien LDAP correspondant
~~~~~~~~~avec mon cas j'ai une arborescence avec 2 groupe possible (noté ldap A et ldap B)
If InStr(mod2.Value, "[valeur]") = 1 Or InStr(mod2.Value, "[valeur]") = 1 Then
Set objOU = GetObject("LDAP://OU=utilisateurs,OU=" & mod2.Value & ",ldap A")
Else
Set objOU = GetObject("LDAP://OU=utilisateurs,OU=" & mod2.Value & "ldap B")
End If
~~~~~~~~~création de l'utilisateur et atribution des valeurs
Set objuser = objOU.Create("User", "cn= " & txt2.Value & " " & txt1.Value)
objuser.sAMAccountName = txt3.Value
objuser.setinfo
objuser.sn = txt1.Value
objuser.givenName = txt2.Value
objuser.scriptPath = mod1.Value
objuser.setinfo
~~~~~~~~~le soucis des memberof c'est quand on risque d'avoir plusieurs groupe de sécurité posssible et leur
~~~~~~~~~position donc par groupe de sécurité il faudra une possibilité de valeur
~~~~~~~~~pour simplifier, on dira que chaque site gardera ses groupes de sécurité
i = 0
ttab() = Split(lst2.RowSource, ";")
Do While i <> lst2.ListCount
'camon
' instr(ucase(chaine1),ucase(chaine2))=1
If InStr(ttab(i), "cam") = 1 Then
Set objGroup = GetObject("LDAP://cn=" & ttab(i) & ",OU=utilisateurs,OU=camon, [ldap A]")
objGroup.PutEx 3, "member", Array("cn= " & txt2.Value & " " & txt1.Value & ",OU=Utilisateurs,OU=" & mod2.Value & "[ldap A]")
objGroup.setinfo
End If
'blissard
If InStr(ttab(i), "bli") = 1 Then
Set objGroup = GetObject("LDAP://cn=" & ttab(i) &
",OU=utilisateurs,OU=blissard,[ldap B]")
End If
i = i + 1
loop
~~~~~~~~pour le reste des attributs c'est suivant les besoins
~~~~~~~~ici j'avais besoin du display name
~~~~~~~~de cocher "user cannot change password" et "password never change"
~~~~~~~~de mettre un mot de passe
~~~~~~~~et d'activer le compte
dist = txt2.Value & " " & txt1.Value
objuser.displayname = dist
objuser.setinfo
objuser.userAccountControl = 66112
objuser.setinfo
objuser.SetPassword txt4.Value
objuser.AccountDisabled = False
objuser.setinfo
~~~~~~~~la suite sert à vider les donnée du formulaire.
txt1.Value = ""
txt2.Value = ""
txt3.Value = ""
txt4.Value = ""
mod1.Value = ""
mod2.Value = ""
<hr size="2" width="100%" />
cependant, j'ai bien 4 champs textes, 2 champs liste texte et 2 listebox.
voilà, comme je savais pas si ça pouvais être une bonne source je vous laisse le choix de décider.
passez une très bonne journée.
et une victoire de plus pour Mr canard