Copie user d'active directory

amosny Messages postés 5 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 18 janvier 2006 - 18 janv. 2006 à 11:09
cs_daveg Messages postés 3 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 9 octobre 2006 - 19 janv. 2006 à 18:50
Bonjour,

je voudrais savoir comment copier un user modele avec ses 'Properties' afin de ne changer que le nom de la personne.

Mon code est le suivant :

public static void CopyUserToDirectory(string user,string directory , string newUser, string domaine, string loginc, string pw )
{

{
//recherche user a copier
DirectoryEntry OldUser = SearchUserFiltre(user, domaine, loginc, pw ) ;
//recherche de dossier ou on doit effectuer la copie
DirectoryEntry directoryNewUser = SearchDirectoryFiltre(directory,domaine, loginc, pw );

//création du user "copie"
DirectoryEntry newuser = directoryNewUser.Children.Add("cn=" + newUser, "user");
newuser.CommitChanges();



foreach (string propertyName in OldUser.Properties.PropertyNames)
{

if (((propertyName!=null) && (propertyName!="")) && (propertyName!="cn") && (propertyName!="distinguishedName") )
newuser.Properties["propertyName"].Add(OldUser.Properties["propertyName"].Value);

}


// on crée un compte de base et on l'active ADS_UF_NORMAL_ACCOUNT
newuser.Properties["userAccountControl"].Value = 0x220;
newuser.CommitChanges();



}

}

une erreur est trouvée dans mon foreach :

Une exception non gérée du type 'System.ArgumentNullException' s'est produite dans mscorlib.dll


Informations supplémentaires : La valeur ne peut pas être null.

Si vous avez une idée.

Merci d'avance.

Amosny

1 réponse

cs_daveg Messages postés 3 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 9 octobre 2006
19 janv. 2006 à 18:50
DirectoryEntry Ldap = new DirectoryEntry("LDAP://"+<NomDomaine>,<NomAdmin>, <MotDePasseAdmin>);
DirectorySearcher searcher = new DirectorySearcher(Ldap);
searcher.Filter = "(SAMAccountName="+<Nom du compte de l'utilisateurdans l'AD>+")";
SearchResult result = searcher.FindOne();
DirectoryEntry Utilisateur = result.GetDirectoryEntry();


Utilisateur.Properties["samAccountName"].Value = NouveauNom; // Le nouveau Nom
Utilisateur.CommitChanges();

La procédure est la même pour tout autre type d'infos, prénom, description, profil .....
0
Rejoignez-nous