如何在GroupPrincipal上设置ManagedBy属性

时间:2010-07-20 10:55:04

标签: c# active-directory directoryservices

我正在使用GroupPrincipal中的System.DirectoryServices.AccountManagement类在Active Directory中创建和更新群组。创建和更新时,我还需要能够在AD管理控制台的组属性中的ManagedBy选项卡中设置您能够设置的Managed By属性。

可以以编程方式完成吗?

3 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:1)

您可以使用ExtensionSet方法扩展GroupPrincipal类并提供ManagedBy属性。

答案 2 :(得分:0)

看看this page。这是c#中关于AD的最佳教程之一。

一些应该有效的代码(未经测试):

    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();