我有一个包含两个域的Ative Directory林,AA.RR.COM和BB.RR.COM,它们包含用户和组。 我需要在两个域中搜索用户,同时查询其中一个用户,例如AA.RT.COM 如何告诉AD对林中的所有邻居域运行我的LDAP查询?
这是我的代码:
using (var searcher = new DirectorySearcher(new DirectoryEntry(adServerName, adLogin, adPassword)))
{
var filter = string.Format("(&(objectClass=person)(|(givenName=*{0}*)(displayName=*{0}*)(sn=*{0}*)(mail=*{0}*)))", valueToSearch);
searcher.ReferralChasing = ReferralChasingOption.All;
searcher.PropertiesToLoad.AddRange(new[] {
"samaccountName",
"memberOf",
"displayname",
"mail" });
searcher.Sort = new SortOption("samaccountname", SortDirection.Ascending);
}
当所有用户位于同一个域中时,此工作正常,但当它们分布在同一个林中的多个域中时,则无法正常工作。
任何帮助都很明显。
答案 0 :(得分:4)
由于您说AA.RR.COM和BB.RR.COM位于同一个Active Directory林中,因此您可以检查您的林中是否正在运行全局编录。如果运行全局编录,则可以对全局编录运行LDAP查询。以下是假设AA.RR.COM中有全局编录的示例代码。
using (DirectorySearcher searcher = new DirectorySearcher(new DirectoryEntry("GC://AA.RR.COM")))
{
var filter = string.Format("(&(objectClass=person)(|(givenName=*{0}*)(displayName=*{0}*)(sn=*{0}*)(mail=*{0}*)))", valueToSearch);
searcher.ReferralChasing = ReferralChasingOption.All;
searcher.PropertiesToLoad.AddRange(new[] { "samaccountName", "memberOf", "displayname", "mail" });
searcher.Sort = new SortOption("samaccountname", SortDirection.Ascending);
foreach (SearchResult result in searcher.FindAll())
{
Console.WriteLine(result.Path);
}
}
答案 1 :(得分:3)
所以,有一些事情:
(objectClass=person)
替换为(objectCategory=person)(objectClass=user)