2010-07-20 18 views
6

Estoy creando y actualizando Grupos en Active Directory usando la clase GroupPrincipal en System.DirectoryServices.AccountManagement. Al crear y actualizar, también debo poder establecer la propiedad ManagedBy que puede configurar en la pestaña Managed By en las propiedades de grupos en la consola de administración de AD.Cómo configuro la propiedad ManagedBy en un GroupPrincipal

¿Se puede hacer programáticamente?

Respuesta

8

No se puede hacer esto directamente, por desgracia - pero se puede obtener acceso a la DirectoryEntry subyacente y hacerlo allí:

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "YOURDOMAIN"); 

UserPrincipal toBeModified = UserPrincipal.FindByIdentity("....."); 
UserPrincipal manager = UserPrincipal.FindByIdentity(ctx, "......"); 

DirectoryEntry de = toBeModified.GetUnderlyingObject() as DirectoryEntry; 

if (de != null) 
{ 
    de.Properties["managedBy"].Value = manager.DistinguishedName; 
    toBeModified.Save(); 
} 
+0

¿No debería el 'tobeModified' ser del tipo' GroupPrincipal'? –

+1

@PBMe_HikeIt: no, ya que esa propiedad 'managedBy' no está" emergida "en' GroupPrincipal', debe ir "un nivel abajo" a 'DirectoryEntry' y tratar con eso allí –

0

Eche un vistazo a this page. Este es uno de los mejores tutoriales sobre AD en C#.

un código que debería funcionar (no probado):

string connectionPrefix = "LDAP://" + ouPath; 
    DirectoryEntry dirEntry = new DirectoryEntry(connectionPrefix); 
    DirectoryEntry newGroup = dirEntry.Children.Add 
     ("CN=" + groupName, "group"); 
    group.Properties["sAmAccountName"].Value = groupName; 
    newGroup.Properties["managedBy"].Value = managerDistinguishedName; 
    newGroup.CommitChanges(); 
    dirEntry.Close(); 
    newGroup.Close(); 
+0

eso no es utilizando el espacio de nombres System.DirectoryServices.AccountManagement que el PO pidió ... –

+0

* http: //www.codeproject.com/KB/system/everythingInAD.aspx#13* no encontrado – Kiquenet

1

Se podría ampliar la clase GroupPrincipal y proporcionar una propiedad ManagedBy utilizando el método ExtensionSet.

+0

Así es como estoy atacando el problema ... aunque tengo problemas para hacer que 'ExtensionSet' funcione correctamente –

+0

[ Esto] (https://www.codeproject.com/articles/118122/how-to-use-ad-attributes-not-represented-in-userpr) en Code Project parece una gran explicación sobre cómo extender GroupPrincipal clase usando inhe ritance –

Cuestiones relacionadas