【问题标题】:Filtering Active Directory Users in Alphabetical Order按字母顺序过滤 Active Directory 用户
【发布时间】:2010-02-10 17:20:05
【问题描述】:

我必须为我工作的公司中的每个用户修改活动目录中的一个属性。这是我作为用户获取所有用户的代码。

        String domain = Properties.Settings.Default.ADConn;
        String user = Properties.Settings.Default.ADAdmin;
        String pass = Properties.Settings.Default.ADPass;

        DirectoryEntry ADEntry = new DirectoryEntry(domain, user, pass);
        DirectorySearcher ADSearcher = new DirectorySearcher(ADEntry);
        ADSearcher.Filter = "(&(objectClass=user)(objectCategory=person))";                        
        SearchResultCollection allResults = ADSearcher.FindAll();            
        foreach (SearchResult result in allResults)
        {
            DirectoryEntry deUser = result.GetDirectoryEntry();

             //....Do stuff here

公司的人很多,所以要求我按字母顺序拆分用户,一次处理一大块用户。例如,更改用户 [A-G] 的属性,然后是 [H-N],然后是 [O-Z]。如何修改我的过滤器以给我 X 到 Y 的用户?

编辑:我的最终结果是执行以下操作:

ADSearcher.Filter = "(&(objectClass=user)(objectCategory=person)(sAMAccountName>=X)(sAMAccountName<=Y))";                        

非常感谢您的帮助。

【问题讨论】:

  • 澄清一下,“用户 X 到 Y”是指姓氏或可能 samaccountnames 以 X 开头的用户,至姓氏或可能 samaccountnames 以 Y 开头的用户。

标签: c# .net active-directory


【解决方案1】:

我以前使用过 OpenLDAP,所以我对过滤器有点熟悉,我发现了一个 Search Filter Syntax document 可能会有所帮助。以下是我认为可能的:

(&(objectClass=user)(objectCategory=person)(cn>='a')(cn<='b'))

让我知道它是否有效。

【讨论】:

  • 我相信您需要在字母周围加上引号。所以 LastName 搜索将是:(&amp;(objectClass=user)(objectCategory=person)(sn&gt;=m)(sn&lt;=p)) username 搜索将是:(&amp;(objectClass=user)(objectCategory=person)(sAMAccountName&gt;=m)(sAMAccountName&lt;=p))
  • 你们俩都是对的。这非常有效。非常感谢。
猜你喜欢
  • 2021-12-23
  • 2019-02-08
  • 2013-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-09
  • 2019-04-25
  • 1970-01-01
相关资源
最近更新 更多