首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Regex的DirectorySearcher滤波器

基于Regex的DirectorySearcher滤波器
EN

Stack Overflow用户
提问于 2019-08-27 14:50:49
回答 1查看 785关注 0票数 0

我有以下代码可以从ActiveDirectory获取所有用户:

代码语言:javascript
复制
List<string> userIds = new List<string>();
Regex userRegex = new Regex("^user[0-9]{8}z$", RegexOptions.IgnoreCase);

DirectoryEntry rootEntry = new DirectoryEntry("LDAP://mydomain.com");
rootEntry.AuthenticationType = AuthenticationTypes.Secure;
DirectorySearcher searcher = new DirectorySearcher(rootEntry)
{
    PageSize = int.MaxValue,
    Filter = "(&(objectClass=user)(objectCategory=person))"
};

foreach (SearchResult result in searcher.FindAll())
{
    string userId = result.Properties["samaccountname"].Count > 0
        ? result.Properties["samaccountname"][0].ToString()
        : string.Empty;

    if (userRegex.IsMatch(userId))
    {
        userIds.Add(userId);
    }
}

这很好,但是要从searcher.FindAll()获得所有用户需要大约50秒的时间。

我想知道是否可以将userRegex移到DirectorySearcher的过滤器上。

我试过:

代码语言:javascript
复制
Filter = "(&(objectClass=user)(objectCategory=person)(samaccountname=user[0-9]{8}z))"

但我没有得到任何结果。

所有用户ids的语法都是user56238941z

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-27 16:51:19

LDAP查询不支持RegEx,所以您无法得到确切的查询,但是您可以接近它,然后像已经在做的那样应用RegEx。

您可以像奥利弗建议的那样,在查询中间使用通配符(我不知道AD是否允许这样做,所以尝试一下--我现在还不能)来查找用户名以user开头,以z结尾的帐户

代码语言:javascript
复制
(&(objectClass=user)(objectCategory=person)(sAMAccountName=user*z))

如果这不起作用,您可以查找用户名以user开头的任何帐户,如下所示:

代码语言:javascript
复制
(&(objectClass=user)(objectCategory=person)(sAMAccountName=user*))

如果仍然返回太多的结果并影响性能,则可以将其展开为只返回用户名以user开头的帐户,后面跟着一个数字,如下所示:

代码语言:javascript
复制
(&(objectClass=user)(objectCategory=person)(|(sAMAccountName=user1*)(sAMAccountName=user2*)(sAMAccountName=user3*)(sAMAccountName=user4*)(sAMAccountName=user5*)(sAMAccountName=user5*)(sAMAccountName=user6*)(sAMAccountName=user7*)(sAMAccountName=user8*)(sAMAccountName=user9*)(sAMAccountName=user0*)))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57677323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档