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() |
Partager