Bonjour à tous,
je voudrais normaliser le champ nom (qui est en fait le champ nom complet) dans mon active directory mais j'ai une erreur dans mon script vbs car il ne veut pas modifier CN qui sert à identifier l'utilisateur avec le protocole LDAP.
Donc je ne sais pas comment il faut faire !

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
85
 
'************************** VARIABLES SYSTEMES **************************
Dim user, computer
Dim u,v,w
Dim oRootDSE,strDomainNC
Dim oConnection,oRecordset
' ------------------------------------- DEBUT DE PROGRAMME -------------------------------------------
 
Sub recuperation_donnees()
' Recherche du domaine Active Directory courant, on peut aussi forcer la valeur !
Set oRootDSE = GetObject("LDAP://RootDSE")
strDomainNC = oRootDSE.Get("defaultNamingContext")
 
' Connexion de type base de donnée à Active Directory
Set oConnection = CreateObject("ADODB.Connection")
oConnection.Provider = "ADsDSOObject"
oConnection.Open "ADs Provider"
Dim nom_complet, prenom
' Définition de la recherche principale
' Tous les utilisateurs dans tous les niveaux de l?arborescence.
Set oRecordset = oConnection.Execute("<GC://"+StrDomainNC+">;(&(objectCategory=user));distinguishedName,sn,givenName,name,displayname,samaccountname;subtree")
 
' Boucle sur les enregistrements.
If Not oRecordset.EOF Then
While Not oRecordset.EOF
 
' Attention les champs vides (Null) ne peuvent pas être concaténés en chaine de caractères
' Il faut donc les vérifier
'stokage des variables réutilisables
nom_LDAP=verifyNULL(oRecordSet.Fields("distinguishedName"))
nom_famille=VerifyNull(oRecordset.Fields("sn"))
'nom_complet=VerifyNull(oRecordset.Fields("name"))
prenom=VerifyNull(oRecordset.Fields("givenName"))
samaccountname=VerifyNull(oRecordset.Fields("samaccountname"))
 
If (nom_famille="" or prenom="") Then
nom_LDAP = "erreur"
Else
nom_complet = normalisation_nom_prenom (nom_famille,prenom)
res=UpdateAccount(nom_LDAP, nom_complet, samaccountname)
End If
 
oRecordset.movenext
Wend
End If
End Sub
 
Function UpdateAccount(nom_chemin, nom_complet, samaccountname)
Dim oUser
wscript.echo nom_chemin
set oUser=GetObject("LDAP://"+nom_chemin)
samaccountname=ouser.samaccountname
nom=oUser.sn
prenom=oUser.givenname
DisplayName=Trim(oUser.DisplayName)
'Récupération du login, nom, prénom et NomComplet !!!
'Si les conditions sont remplies, on pourra définir la nouvelle valeur
NewFullName=nom_complet
'Puis réécrire l'information modifiée dans Active Directory :
oUser.put "cn", NewFullName
oUser.setinfo
UpdateAccount=1
End Function
 
' Fonctions...
 
Function VerifyNull(field)
IF not (isnull(Field)) Then
VerifyNull=Field
Else
VerifyNull=""
End IF
End Function
 
Function normalisation_nom_prenom(nom, prenom)
nb = len(prenom)
prenom = UCASE(LEFT(prenom,1)) & LCASE(RIGHT(prenom,nb-1)) 'prends la première lettre
nom = UCASE(nom)
nom_complet = nom & " " & prenom
'wscript.echo "prenom " & prenom
wscript.echo "Nom complet : " & nom & " " & prenom
normalisation_nom_prenom=nom_complet
End Function
 
recuperation_donnees()
Merci d'avance.