我想编写一个Console应用程序,它只使用.Net DirectoryServices API和LDAP将新用户添加到我自己的机器的域中。
我是否需要DomainController的管理员帐户密码才能执行此操作?
我是否只需要在该域上的计算机上运行该控制台应用程序,或者也可以在其他域上运行?
有人能为我提供一个例子吗?
更新:获取用户代码数
DirectoryEntry myLdapConnection = createDirectoryEntry();
DirectorySearcher search = new DirectorySearcher(myLdapConnection);
search.Filter = "(&objectClass=User)objectCategory=Person)userPrincipalName=*health2.com))";
search.PropertiesToLoad.Add("sAMAccountName");
SearchResultCollection allUsers = search.FindAll();
for (int usersCount = 0; usersCount < allUsers.Count; usersCount++)
{
SearchResult result = allUsers[usersCount];
if (result.Properties["sAMAccountName"].Count > 0)
{
string cn = result.Properties["sAMAccountName"][0].ToString();
Console.WriteLine(cn);
Console.ReadLine();
}
}
Console.WriteLine(string.Format(@"Users Count - {0}", allUsers.Count.ToString()));
Console.ReadLine();
答案 0 :(得分:2)
如果您使用的是.NET 3.5及更高版本,则应查看System.DirectoryServices.AccountManagement
(S.DS.AM)命名空间。在这里阅读所有相关内容:
基本上,您可以定义域上下文并轻松在AD中查找用户和/或组:
// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");
if(user != null)
{
// do something here....
}
我提供的文章链接也显示了您可以轻松创建新用户并将其添加到AD:
// create a user principal object
UserPrincipal user = new UserPrincipal(ctx, "User1Acct", "pass@1w0rd01", true);
// assign some properties to the user principal
user.GivenName = "User";
user.Surname = "One";
user.UserPrincipalName = "user.one@health2.com";
// force the user to change password at next logon
user.ExpirePasswordNow();
// save the user to the directory
user.Save();
新的S.DS.AM让您可以轻松地与AD中的用户和群组一起玩!