【发布时间】:2018-07-04 16:21:58
【问题描述】:
我使用DirectorySearcher 从 Active Directory 获取所有用户 - 但我只需要获取“真实”用户。
过滤器:
search.Filter = "(&(objectClass=user)(objectCategory=person))";
但我获得了所有用户帐户,例如:
henry.miller <-wanted
ernest.hemingway <-wanted
HealthMailboxced7671 <-not wanted
问题:如何修改我的过滤器以仅返回真实用户?
我的整个代码:
string DomainPath = "LDAP://DC=writers,DC=local";
DirectoryEntry searchRoot = new DirectoryEntry(DomainPath);
DirectorySearcher search = new DirectorySearcher(searchRoot);
search.Filter = "(&(objectClass=user)(objectCategory=person))";
search.PropertiesToLoad.Add("samaccountname");
SearchResult result;
SearchResultCollection resultCol = search.FindAll();
if (resultCol != null)
{
for (int counter = 0; counter < resultCol.Count; counter++)
{
result = resultCol[counter];
if (result.Properties.Contains("samaccountname"))
{
Console.WriteLine((String)result.Properties["samaccountname"][0]);
}
}
}
【问题讨论】:
-
试试这个过滤器 -
(&(objectCategory=person)(objectClass=user)(SAMAccountName=*)(!(homeMDB=*NonUser*))) -
刚刚注意到上面的一个错字,使用
sAMAccountName而不是SAMAccountName。也可以通过 LDAP 尝试 -(&(objectCategory=person)(objectClass=user)(sAMAccountName=*)(!(cn=*O*))) -
我认为它只是CN,它与distinguishedName不同
标签: c# .net active-directory user-accounts directorysearcher