【发布时间】:2016-09-20 19:03:05
【问题描述】:
我正在使用 PrincipalSearcher 对象在 Active Directory 中搜索特定的 SamAccountName 值,因为我想返回 UserPrincipal 的值。我想知道如何将两个过滤器应用于该搜索;一个是帐户名的开头以xx开头,另一个是它不以_c结尾。
目前我可以使用xx* 搜索以xx 开头的所有结果,但我不知道如何添加另一个搜索词,甚至不知道如何应用搜索词不等于。这就是我目前正在使用的。
protected override void RunTests()
{
using (PrincipalContext context = new PrincipalContext(ContextType.Domain, "NAME", "OU=OUName",OU=name,DC=name,DC=net"))
{
UserPrincipal searchTemplate = new UserPrincipal(context);
searchTemplate.Enabled = true;
searchTemplate.SamAccountName = "xx*";
PrincipalSearcher search = new PrincipalSearcher(searchTemplate);
var principals = search.FindAll();
int total = principals.Count();
int numInvalidUsers = RunChecks(principals, new Check[]{
Check1
, Check2
, Check3
});
Score = numInvalidUsers == 0 ? 1 : 0;
}
}
我的想法是我需要向searchTemplate.SamAccountName 添加另一个参数,我只是不确定如何。
更新: 我正在与Reddit 上的某个人交谈,他给了我一些有用的建议,但这个用户已经昏迷了。似乎最常见的建议是以某种方式实现 LDAP 过滤器。因此,如果有人知道如何在返回主体对象的同时实现这些,那将非常有帮助。
【问题讨论】:
标签: c# active-directory userprincipal principalsearcher