使用全名进行Active Directory搜索

时间:2014-04-29 17:06:09

标签: active-directory

我正在尝试根据“最后,第一个中间人”的全名来搜索活动目录。问题是,这些是AD中的三个单独字段,但我只有一个字符串可供搜索。有没有办法,使用活动目录来搜索组合字段,类似于在SQL中可以完成的方式? SQL中的ex:

SELECT * FROM tbltest WHERE (Last + ',' + First + ' ' + MiddleI) = 'LAST,FIRST MIDDLEI'

在活动目录中可能会出现类似下面的内容?:

"(sn+','+givenname+' '+initials = LAST,FIRST MIDDLEI)"

1 个答案:

答案 0 :(得分:0)

如果您正在使用AccountManagement(http://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement%28v=vs.110%29.aspx)命名空间,您可以执行以下操作:

using (var context = new PrincipalContext(ContextType.Domain, FQDC))
{
    UserPrincipal up = new UserPrincipal(context);

    up.GivenName = First;
    up.MiddleName = MiddleI;
    up.Surname = Last;

    PrincipalSearcher ps = new PrincipalSearcher();
    ps.QueryFilter = up;

    PrincipalSearchResult<Principal> results = ps.FindOne();

    if (results != null) ...
}

如果你使用SDS代表DirectorySearcher,你可以设置过滤属性:

searcher.Filter = string.Format("(&(objectclass=user)(lastname={0})(firstname={1})(middlename={2}))", Last, First, MiddleI);