在不同域的活动目录中创建OU

时间:2014-09-08 14:43:16

标签: c# ldap directoryentry

我正在尝试设置代码以在活动目录中创建新的OU(组织单位)。

目标是从Active Directory中的SSO复制安全结构并自动化用户配置。

我有可以使用PrincipalContext创建组和用户的工作代码。

我连接的域控制器位于不同的域中,因为它是一台测试计算机。我的计算机设置使用此测试控制器进行DNS并在主机文件中有一个条目。

当我运行下面的代码时,我没有错误。但每当我检查活动目录时,都没有证据表明OU已经创建。

public static void CreateOU()
{
    DirectoryEntry domain = new DirectoryEntry("LDAP://testdomain.test.com/DC=test,DC=com", "username", "password");
    domain.Children.Add("AnotherOU", "OrganizationalUnit");
    domain.CommitChanges();
}

如果我输入无效的ldap路径或删除testdomain.test.com,我肯定会遇到登录错误(连接到错误的域)或查找OU时的其他错误。

修改 - 正在使用的帐户是域管理员。

编辑 - 添加到下面的答案。我还必须将AnotherOU名称更改为OU = AnotherOU,否则会出现命名违规错误。

1 个答案:

答案 0 :(得分:2)

试试这个:

public static void CreateOU()
{
   DirectoryEntry domain = new DirectoryEntry("LDAP://testdomain.test.com/DC=test,DC=com", "username", "password");
   DirectoryEntry newOU = domain.Children.Add("AnotherOU", "OrganizationalUnit");
   newOU.CommitChanges();
}

您必须在新创建的对象上调用CommitChanges(),而不是在父对象中。