Active Directory用户-多域 [英] Active directory users - Mutliple domain
本文介绍了Active Directory用户-多域的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个应用程序,它可以从AD中搜索所有域用户,有人可以让我知道如何在多个域中搜索吗?
Hi,
i have an application where its searching all domain users from AD, can some one let me know how can i search in multiple domains?
推荐答案
很好.您可以使用以下代码获取多个Active Directory(您所属的Active Directory)的列表:
Great. You can fetch the list of multiple Active Directory (which u belongs) using the below code:
On Error Resume Next
Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D
Set objUser = GetObject _
("LDAP://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
intPrimaryGroupID = objUser.Get("primaryGroupID")
arrMemberOf = objUser.GetEx("memberOf")
If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
WScript.Echo "The memberOf attribute is not set."
Else
WScript.Echo "Member of: "
For Each Group in arrMemberOf
WScript.Echo Group
Next
End If
public static DataTable SearchADUsers(string userName)
{
//Create new datatable
using (DataTable dtUsers = new DataTable())
{
dtUsers.Locale = CultureInfo.InvariantCulture;
dtUsers.Columns.Add("key");
dtUsers.Columns.Add("value");
foreach (string domainToBeSearched in ConfigurationDetails.DomainTobeChecked.Split(','))
{
ValidateADUser(domainToBeSearched, userName, dtUsers);
}
return dtUsers;
}
}
private static void ValidateADUser(string domainToBeSearched, string userName, DataTable dtUsers)
{
try
{
using (DirectoryEntry domain = new DirectoryEntry("LDAP://" + domainToBeSearched))
{
using (DirectorySearcher searcher = new DirectorySearcher())
{
//Set root for searching
searcher.SearchRoot = domain;
//Set filters for searching user
searcher.Filter = FormFilter("user", userName + "*");
searcher.SearchScope = SearchScope.Subtree;
searcher.PageSize = 10;
//Get all registered user on basis of passed filter
using (SearchResultCollection adResult = searcher.FindAll())
{
DataRow dtrUsers = null;
foreach (SearchResult result in adResult)
{
if (dtUsers.Select("key='" + result.Properties["samaccountname"][0].ToString() + "'").Length <= 0)
{
//Add user to datatable
dtrUsers = dtUsers.NewRow();
dtrUsers[0] = result.Properties["samaccountname"][0].ToString();
dtrUsers[1] = result.Properties["DisplayName"][0];
dtUsers.Rows.Add(dtrUsers);
}
}
}
}
}
}
catch (Exception ex)
{
LogUtil.WriteLog(LogLevel.ERROR, ex.ToString());
}
}
在配置文件中指定域名
< add key ="DomainTobeChecked" value ="abc.com,lmn.com,xyz.net">
Specify the domain names in config file
<add key="DomainTobeChecked" value="abc.com, lmn.com,xyz.net">
这篇关于Active Directory用户-多域的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文