我正在使用GroupPrincipal
. System.DirectoryServices.AccountManagement
创建和更新时,我还需要能够设置ManagedBy
您能够Managed By
在 AD 管理控制台的组属性中的选项卡中设置的属性。
可以以编程方式完成吗?
我正在使用GroupPrincipal
. System.DirectoryServices.AccountManagement
创建和更新时,我还需要能够设置ManagedBy
您能够Managed By
在 AD 管理控制台的组属性中的选项卡中设置的属性。
可以以编程方式完成吗?
不幸的是,您不能直接执行此操作 - 但您可以访问底层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();
}
您可以扩展 GroupPrincipal 类并使用ExtensionSet方法提供一个ManagedBy
属性。
看看这个页面。这是 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();