我正在尝试以编程方式将计算机添加到我公司的 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/