查询跨域用户的全局地址列表(GAL)
-
12-09-2019 - |
题
我要搜索包含他们对Exchange服务器全局地址列表中的名称有一定的文本字符串的所有用户。此操作会从ASP.NET应用程序中进行。需要注意的是,GAL是必需的(不是Active Directory),因为它包含了整个域的用户。这也是客户所要求的东西。
我一直期待在Exchange Web服务和Outlook Web Access的方法。然而也不得在我的组织进行配置,所以我需要了解哪些选项是要求基础设施配置它之前是正确的。
<强> Exchange Web服务强>
我希望使用 ResolveNames 方法在Exchange Web服务。为它的文档指出:
活动目录首先被搜索,然后将用户的联系人文件夹被搜索。
这似乎意味着,该方法将只从当前域返回用户。这是正确的吗?
<强>的Outlook Web Access 强>
我发现的另一种选择是GALFind。这看起来很完美,但 指出,它是不受支持。经确认,因为这的Technet 文章中不再可用。
任何人都可以请这些或任何其他的选择给出建议?
解决方案
可以通过启动从森林根查询跨域查询。这里是我结束了使用的代码:
string filter = "(&(objectCategory=person)(objectClass=user)(name=*" + search + "*))";
var rootEntry = new DirectoryEntry("GC:");
foreach (DirectoryEntry entry in rootEntry.Children)
{
DirectoryEntry forestEntry = entry;
DirectorySearcher searcher = new DirectorySearcher
{
SearchRoot = forestEntry,
Filter = filter,
Sort =
{
Direction = SortDirection.Ascending,
PropertyName = "cn"
}
};
searcher.PropertiesToLoad.AddRange(ADProperties.Values.ToArray());
SearchResultCollection results = searcher.FindAll();
foreach (SearchResult result in results)
{
DirectoryEntry foundEntry = result.GetDirectoryEntry();
// Do something
}
}
不隶属于 StackOverflow