如何使用DirectoryServices.AccountManagement在.NET 3.5或4中创建Active Directory中的新组织单位(OU)?

6
为了在Active Directory中创建和查找用户和组,我一直使用这个代码:http://anyrest.wordpress.com/2010/06/28/active-directory-c/。它使用了在.net 3.5中引入的新的System.DirectoryServices.AccountManagement命名空间...
我想添加一个方法,使用最新的技术在.net 3.5或4.0中创建一个新的OU(如果OU不存在),而不使用旧的System.DirectoryServices。
有什么想法吗?
1个回答

10
根据在.NET Framework 3.5中管理目录安全主体特别是以下架构和System.DirectoryServices.AccountManagement命名空间文章,accountManagement用于用户组和计算机(安全主体)。

Active Directory Architecture

对于organizationalUnit,您可以在此处使用System.DirectoryServices.ActiveDirectory,以下是一个示例:

using System.DirectoryServices;

...

/* Connection to Active Directory
 */
DirectoryEntry deBase = new DirectoryEntry("LDAP://WM2008R2ENT:389/ou=Monou,dc=dom,dc=fr", "jpb", "PWD");

DirectorySearcher ouSrc = new DirectorySearcher(deBase);
ouSrc.Filter = "(OU=TheNewOU)";
ouSrc.SearchScope = SearchScope.Subtree;
SearchResult srOU = ouSrc.FindOne();
if (srOU == null)
{
  /* OU Creation
   */
  DirectoryEntry anOU = deBase.Children.Add("OU=TheNewOU", "organizationalUnit");
  anOU.Properties["description"].Value = "The description you want";
  anOU.CommitChanges();
}

不要忘记使用using(){}指令


我认为您可以使用PrincipalContext来检索Container值。 - JPBlanc
1
但我能检查OU是否存在吗? 我能添加一个新的OU吗?如果不能,我该如何获取主体上下文并从其属性创建DirectoryEntery对象? - danfromisrael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接