按部门过滤用户列表(PrincipalSearcher)

时间:2017-09-22 23:00:35

标签: c# asp.net active-directory

我想找到属于一个部门的所有用户。但是,用户主体中没有用于过滤部门的选项。我怎么能意识到这一点?找到用户已经很有用了。

当我使用DisplayName编写部门时,我会收到超时错误。

    private void FindFromGroupName()
    {
        string departement = _departement;

        // Create the context for the principal object. 
        PrincipalContext ctx;
        ctx = new PrincipalContext(ContextType.Domain);

        // Create an in-memory user object to use as the query example.
        UserPrincipal u = new UserPrincipal(ctx);

        // Set properties on the user principal object.
        u.Surname = "Doe";
        //u.DisplayName = "*" + departement + "*";

        // Create a PrincipalSearcher object to perform the search.
        PrincipalSearcher ps = new PrincipalSearcher();

        // Tell the PrincipalSearcher what to search for.
        ps.QueryFilter = u;

        var _results = ps.FindAll();

        foreach (UserPrincipal whatever in _results)
        {
            Console.WriteLine(whatever.Name.ToUpper() + ":      \t\t" + whatever.DisplayName + Environment.NewLine);
        }
    }

编辑: 如果我只是这样过滤:

u.DisplayName = "*" + departement + "*";

然后我收到以下错误:

System.Runtime.InteropServices.COMException:{"超出了此请求的时间限制。\ r \ n"}

显示名称看起来像这样:John Doe(Departement / GroupName)

搜索可能需要很长时间。但我不知道如何分析我的公司网络。我无法在userPrincipal找到一个保留部分的条目。有没有更好地了解帐户。如何创建自己创建的过滤器?

注意DistinguishedName如下所示:CN =(1),OU =(2),OU = Useraccounts,OU =(3),DC =(4),DC =(5),DC = com

解释 (1):帐户名 (2):姓氏的第一封信 (3):城市 (4):国家 (5):公司名称

0 个答案:

没有答案