在多个Active Directory域中搜索用户

时间:2012-12-20 08:20:14

标签: c# active-directory

我正在使用System.DirectoryServices.AccountManagement来提供用户查找功能。

该公司有几个特定地区的AD域名:AMR,EUR,JPN等。

以下适用于EUR域,但不会从其他域返回用户(自然地):

var context = new PrincipalContext(ContextType.Domain, "mycorp.com", "DC=eur,DC=mycorp,DC=com");

var query = new UserPrincipal(GetContext());

query.Name = "*Bloggs*";

var users = new PrincipalSearcher(query).FindAll().ToList();

但是,如果我定位整个目录,则不会从任何区域特定域返回用户:

var context = new PrincipalContext(ContextType.Domain, "mycorp.com", "DC=mycorp,DC=com");

如何搜索整个目录?

更新

阅读“Active Directory搜索工作原理”:

http://technet.microsoft.com/en-us/library/cc755809(v=ws.10).aspx

如果我使用端口3268对服务器名称后缀,则会搜索全局编录:

var context = new PrincipalContext(ContextType.Domain, "mycorp.com:3268", "DC=mycorp,DC=com");

然而,它非常非常慢。关于如何提高绩效的任何建议?

1 个答案:

答案 0 :(得分:0)

具有初始通配符(*Bloggs*)的查询将很慢,除非您对属性的元组索引是查询。默认情况下,AD中没有任何属性具有此设置。最好不要做最初的通配符。