【发布时间】:2017-09-10 07:58:14
【问题描述】:
我正在使用 DirectoryEntry 类
尝试从特定 OU 和子 OU 读取所有用户。
以下代码是任务的一部分
using(DirectoryEntry dEntry = new DirectoryEntry(dn))
using(DirectorySearcher dSearcher = new DirectorySearcher(dEntry))
{
dSearcher.SearchScope = SearchScope.Subtree;
dSearcher.Filter = "(&(objectClass=user) (objectCategory=person))";
foreach(SearchResult in dSearcher.FindAll())
{
//Do something...
}
}
某些子 OU 受到保护,当前用户无法读取。 我得到了任务异常“一个或多个错误” 我正在寻找方法来检查 OU 是否不可访问并跳过它。并将该 OU 写入日志。 我试过以下:
public void GetOu(List<MyUser> list, string path)
{
using (DirectoryEntry dEntry = new DirectoryEntry(path))
using(DirectorySearcher dSearcher = new DirectorySearcher(dEntry))
{
dSearcher.SearcherScope = SearchScope.Subtree;
dSearcher.Filter = "(objectClass=organizationalUnit)";
foreach(SearchResult result in dSearcher.FindAll())
{
GetUsersFromOU(list,result.GetDirectoryEntry());
}
}
}
public void GetUsersFromOU(List<MyUser> list,DirectoryEntry ou)
{
using (DirectorySearcher dSearcher = new DirectorySearcher(ou);
dSearcher.SearchScope = SearchScope.OneLevel;
dSearcher.Filter = "(&(objectClass=user)(objectCategory=person))";
foreach (Search result in dSearcher.FindAll())
{
//Do something.... update list...
}
}
现在没有异常并跳过不可访问的 OU。 1.但还是找不到“坏欧”是什么 2.运行时间是灾难性的……
【问题讨论】:
-
无法访问是什么意思?你的意思是不存在?
标签: c# active-directory directoryentry