好的,我现在的问题是我们正在尝试编写将用户添加到Active Directory中不同组的代码。这是我们写的解决方案。
主要方法的一部分:
string newGroup = "TestDelete";
string userName = result.Properties["cn"][0].ToString();
string adduser = ad.AddToGroup(userName, newGroup);
Console.WriteLine(String.Format("{0} : {1}",userName, adduser));
从另一个类调用此方法:
public String AddToGroup(string userDn, string groupDn)
{
try
{
DirectoryEntry ldapConnection = new DirectoryEntry("LDAP://OU=" + groupDn + ",DC=blah,DC=blah,DC=blah");
ldapConnection.AuthenticationType = AuthenticationTypes.Secure;
string newUser = "CN=" + userDn + "CN=Members,DC=blah,DC=blah,DC=blah";
ldapConnection.Invoke("Add", new object[] { newUser });
ldapConnection.CommitChanges();
ldapConnection.Close();
return "Success";
}
catch (System.DirectoryServices.DirectoryServicesCOMException E)
{
Console.WriteLine("Exception caught:\n\n" + E.ToString());
}
}
抛出异常
System.Runtime.InteropServices.COMException(0x80020006):未知名称。 (HRESULT异常:0x80020006(DISP_E_UNKNOWNNAME))
在System.DirectoryServices.DirectoryEntry.InvokeSet(String propertyName,Object [] args)
在adjustUsers.Program.AddToGroup(String userDn,String groupDn)中的C:\ Users \ XXX \ Documents \ Visual Studio 2010 \ Projects \ UserPruning \ adjustUsers \ Program.cs:第45行
at UserPruning.MainProgram.Main(String [] args)在C:\ Users \ XXX \ Documents \ Visual Studio 2010 \ Projects \ UserPruning \ UserPruning \ MainProgram.cs:第46行
据我们所能找到,表明我们的语法存在问题。
第46行
string adduser = ad.AddToGroup(userName,newGroup)
第45行
ldapConnection.Invoke("Add", new object[] {newUser});
我们一直试图在最后一天重写这段代码并仍然难倒。
帮助?
由于
答案 0 :(得分:5)
如果您使用的是.NET 3.5及更高版本,则应查看System.DirectoryServices.AccountManagement
(S.DS.AM)命名空间。在这里阅读所有相关内容:
基本上,您可以定义域上下文并轻松在AD中查找用户和/或组:
// set up domain context
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain))
{
// find your user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");
if(user != null)
{
// find the group in question
GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, "TestDelete");
// if found....
if (group != null)
{
// add user to group
group.Members.Add(user);
group.Save();
}
}
}
新的S.DS.AM让您可以轻松地与AD中的用户和群组一起玩!