我正在尝试以编程方式将计算机添加到我公司的 Active Directory。
我在互联网上搜索了这么长时间,但我找不到解决方案。

我的代码:

DirectoryEntry dirEntry = new DirectoryEntry("LDAP://OU=ou2example,OU=ou1example,DC=site,DC=company,DC=com");
dirEntry.Username = "username";
dirEntry.Password = "password";
DirectoryEntry newComputer = dirEntry.Children.Add("CN=" + ComputerName, "computer");
newComputer.CommitChanges();

我的问题:

计算机已添加到 Active Directory。但它被标记为禁用。

我尝试按照以下步骤启用计算机:
newComputer.Properties["userAccountControl"].Value = 0x200;

但是我收到 DirectoryServicesCOMException --> 服务器无法完成请求。

或者
newComputer.Properties["Enabled"].Value = true;

但是我收到 DirectoryServicesCOMException --> 请求的操作不满足至少一个针对此对象类条件的约束。

请注意,异常(exception)情况是从德语翻译成英语的!

感谢您的帮助!

最佳答案

我认为有两件事可能是错的,但我已经很久没有做过这样的事情了,所以我可能错了......

首先,什么时候设置 userAccountControl 标志?我似乎记得您应该在新条目的 CommitChanges 之后执行此操作。所以像这样:

DirectoryEntry newComputer =
    dirEntry.Children.Add("CN=" + ComputerName, "computer");
newComputer.CommitChanges();
newComputer.Properties["userAccountControl"].Value = 0x200;
newComputer.CommitChanges();

其次,您可以尝试设置 UF_WORKSTATION_TRUST_ACCOUNT 标志 ( 0x1000 ) 而不是 UF_NORMAL_ACCOUNT ( 0x200 )。

你也可以检查一下条目的 sAMAccountType 是否是 SAM_MACHINE_ACCOUNT ( 0x30000001 )。我认为这应该是自动的,但检查起来并没有什么坏处。

关于c# - 将启用的计算机添加到 Active Directory OU,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21428263/

10-15 12:32