Pregunta

Tengo algo de código usando DirectoryEntry para manipular el local de Active Directory a través de LDAP. Actualmente me encuentro con una OU específica, añadir un usuario a la misma, actualizar las propiedades del usuario y luego confirmar todos los cambios:

DirectoryEntry ldapRoot = new DirectoryEntry(ldapString, user, password);
DirectoryEntry userGroup = ldapRoot.Children.Find("OU=OUGroup");
DirectoryEntry newUser = userGroup.Children.Add("CN=" + userName, "user");
newUser.Properties["displayName"].Value = displayName;

...

newUser.CommitChanges();
userGroup.Close();
ldapRoot.Close();

LDAPString es algo parecido a LDAP:\\DC=company,DC=local, básicamente es sólo ir a buscar la entrada de la raíz.

cambiar varias propiedades, pero es todo lo fino de trabajo. Sin embargo, tengo otra llamada OU SharePoint_Groups, que tiene un grupo llamado el interior Internal. Quiero añadir el nuevo usuario como miembro de este grupo, pero estoy en una pérdida de cómo hacerlo. He intentado lo siguiente:

DirectoryEntry spGroup = ldapRoot.Children.Find("OU=Sharepoint_Groups");
DirectoryEntry internal = spGroup.Children.Find("CN=Internal");

No funciona y no estoy seguro de cómo debería abordar Internal - es CN = correcta o debería usar alguna otra especificación

?

Y, una vez que tenga el grupo correcto, ¿cómo puedo añadir el usuario existente a ella?

Gracias de antemano

¿Fue útil?

Solución

Básicamente, para agregar un usuario a un grupo existente, es necesario que se unen al grupo y actualizarlo de propiedad member, utilizando el nombre distinguido completo del usuario:

DirectoryEntry deGroup = new DirectoryEntry("LDAP://CN=Internal,OU=Sharepoint_Groups,DC=Company,DC=local");

string userDN = newUser.Properties["distinguishedName"][0].ToString();

deGroup.Properties["member"].Add(userDN);
deGroup.CommitChanges();

Un gran recurso para este tipo de cosas es el artículo CodeProject Cómo hacer casi todo en Active Directory usando C # - un montón de ejemplos de código útiles

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top