2010-07-20 2 views
6

Я создаю и обновляю группы в Active Directory с помощью класса GroupPrincipal в System.DirectoryServices.AccountManagement. При создании и обновлении мне также необходимо установить свойство ManagedBy, которое вы можете установить на вкладке Managed By в свойствах групп в консоли управления AD.Как установить свойство ManagedBy в GroupPrincipal

Можно ли это сделать программно?

ответ

8

Вы не можете сделать это непосредственно, к сожалению, - но вы можете получить доступ к базовой DirectoryEntry и сделать это там:

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

Не должен ли 'tobeModified' быть типа' GroupPrincipal'? –

+1

@PBMe_HikeIt: нет, поскольку свойство 'managedBy' не« всплыло »в« GroupPrincipal », вам нужно перейти на один уровень вниз к« DirectoryEntry »и с ним справиться –

0

Посмотрите на this page. Это один из лучших учебников по AD в C#.

Некоторый код, который должен работать (непроверенные):

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

Это не используя пространство имен System.DirectoryServices.AccountManagement, что запрошенный ОП ... –

+0

* http: //www.codeproject.com/KB/system/everythingInAD.aspx#13* не найден – Kiquenet

1

Вы можете расширить класс GroupPrincipal и обеспечить ManagedBy свойства с помощью метода ExtensionSet.

+0

Вот как я нападаю на проблему ... хотя у меня возникают проблемы с правильной работой 'ExtensionSet' –

+0

[ Это] (https://www.codeproject.com/articles/118122/how-to-use-ad-attributes-not-represented-in-userpr) в Code Project выглядит как отличное объяснение того, как расширить GroupPrincipal класс, используя inhe ritance –