我想找到属于一个部门的所有用户。但是,用户主体中没有用于过滤部门的选项。我怎么能意识到这一点?找到用户已经很有用了。
当我使用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):公司名称