TUTOS.EU

Changer le champ CN d'un objet AD en vbscript

Comment modifier la valeur du champ CN d'un objet de l'Active Directory en vbscript

Le champ cn d'un objet active directory est particulier car il concerne et impact le chemin d'accès de l'objet, aussi pour le modifier il ne faut pas modifier un attribut de l'objet mais il faut déplacer l'objet.

Le code ci-dessous expose comment :

Dim varCodeRetour, varMessageErreur

varCodeRetour = RenommerCNObjetAD("CN=NomObjet,CN=Users,DC=mydomain,DC=local","NouveauNomObjet",varMessageErreur)
If varCodeRetour <> 1 Then Wscript.echo "Erreur : " & varMessageErreur

Public Function RenommerCNObjetAD(ByVal CheminLDAPObjetAD, ByVal NouveauNom, ByRef ErreurDesc)
	'Version du 25/09/2009

	'En entrée :
	'CheminLDAPObjetAD : attend une chaine du type : CN=NomDeLobjet,OU=MonOU,Dc=Mon,DC=Domaine,DC=Com
	'NouveauNom : nouveau nom de l'objet. Exemple : LeNouveauNom
	'ErreurDesc : Si il y a une erreur, cette variable retourne sa description

	'Retourne 1 si le CN de l'objet AD a été modifié
	'Retourne 0 si non

	Dim NumeroErreur
	Dim objAD
	Dim ObjParent
	Dim OldsAMAccountName

	RenommerCNObjetAD = 0
	If (Len(CheminLDAPObjetAD) > 0) Then
		'Connexion a l objet
		Err.Clear
		On Error Resume Next
		Set objAD = GetObject("LDAP://" & CheminLDAPObjetAD)
		NumeroErreur = Err.Number
		ErreurDesc = "Impossible de se connecter a l objet."
		On Error GoTo 0
		If (NumeroErreur = 0) Then
			'Connexion à l 'objet parent de l objet
			Err.Clear
			On Error Resume Next
			Set ObjParent = GetObject(objAD.Parent)
			NumeroErreur = Err.Number
			ErreurDesc = "Impossible de se connecter au parent de l objet."
			On Error GoTo 0
			If (NumeroErreur = 0) Then

				'Renommage du CN de l objet
				Err.Clear
				On Error Resume Next
				Call ObjParent.MoveHere("LDAP://" & objAD.distinguishedName, "cn=" & NouveauNom)
				NumeroErreur = Err.Number
				'ErreurDesc = "Impossible de renommer le CN de l objet."
				ErreurDesc = "Impossible de renommer le CN de l objet : " & Err.Desciption
				On Error GoTo 0
				If (NumeroErreur = 0) Then
					RenommerCNObjetAD = 1
					ErreurDesc = ""
				End If
				Set ObjParent = Nothing
			End If 'If (NumeroErreur = 0) Then
		End If 'If (NumeroErreur = 0) Then
	Else
		ErreurDesc = "Le chemin d acces a l objet est vide"
	End If 'If (Len(CheminLDAPObjetAD) > 0) Then

End Function
Lien vers le fichier : cliquez ici Copier le code

2