Как установить свойство ManagedBy для GroupPrincipal - PullRequest
6 голосов
/ 20 июля 2010

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

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

Ответы [ 3 ]

8 голосов
/ 20 июля 2010

К сожалению, вы не можете сделать это напрямую, но вы можете получить доступ к базовому 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();
}
1 голос
/ 20 июля 2010

Вы можете расширить класс GroupPrincipal и предоставить свойство ManagedBy, используя метод ExtensionSet .

0 голосов
/ 20 июля 2010

Взгляните на эту страницу .Это один из лучших учебников по 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();
...