我正在尝试根据“最后,第一个中间人”的全名来搜索活动目录。问题是,这些是AD中的三个单独字段,但我只有一个字符串可供搜索。有没有办法,使用活动目录来搜索组合字段,类似于在SQL中可以完成的方式? SQL中的ex:
SELECT * FROM tbltest WHERE (Last + ',' + First + ' ' + MiddleI) = 'LAST,FIRST MIDDLEI'
在活动目录中可能会出现类似下面的内容?:
"(sn+','+givenname+' '+initials = LAST,FIRST MIDDLEI)"
答案 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);