LDAP:如何将新用户添加到OU内的组

时间:2010-11-04 11:28:22

标签: active-directory ldap directoryentry

我有一些代码使用DirectoryEntry通过LDAP操作本地Active Directory。目前我找到一个特定的OU,向其添加用户,更新用户的属性,然后提交所有更改:

DirectoryEntry ldapRoot = new DirectoryEntry(ldapString, user, password);
DirectoryEntry userGroup = ldapRoot.Children.Find("OU=OUGroup");
DirectoryEntry newUser = userGroup.Children.Add("CN=" + userName, "user");
newUser.Properties["displayName"].Value = displayName;

...

newUser.CommitChanges();
userGroup.Close();
ldapRoot.Close();

ldapString类似于LDAP:\\DC=company,DC=local,基本上它只是获取根条目。

我更改了几个属性,但一切正常。但是,我有另一个名为SharePoint_Groups的OU,其中有一个名为Internal的组。我想将新用户添加为该组的成员,但我不知道该怎么做。我尝试了以下方法:

DirectoryEntry spGroup = ldapRoot.Children.Find("OU=Sharepoint_Groups");
DirectoryEntry internal = spGroup.Children.Find("CN=Internal");

它不起作用,我不确定如何解决Internal - CN =正确还是我应该使用其他规范?

而且,一旦我拥有了正确的组,如何将现有用户添加到其中?

提前致谢

1 个答案:

答案 0 :(得分:3)

基本上,要将用户添加到现有组,您需要使用用户的完全限定专有名称绑定到该组并更新其member属性:

DirectoryEntry deGroup = new DirectoryEntry("LDAP://CN=Internal,OU=Sharepoint_Groups,DC=Company,DC=local");

string userDN = newUser.Properties["distinguishedName"][0].ToString();

deGroup.Properties["member"].Add(userDN);
deGroup.CommitChanges();

像这样的东西的一个很好的资源是CodeProject文章How to do just about everything in Active Directory using C# - 许多有用的代码示例!