2

我有一些代码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,基本上它只是获取根条目。

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

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

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

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

提前致谢

4

1 回答 1

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 文章如何使用 C# 在 Active Directory 中做几乎所有事情- 很多有用的代码示例!

于 2010-11-04T11:38:18.630 回答