我对Active Directory执行查询,可以返回用户和组。
(&(|(&(objectCategory=person)(objectClass=user))(objectCLass=group))(...))
但是当我尝试从结果集中获取objectClass属性时,我得到了"top"
DirectorySearcher searcher = new DirectorySearcher(baseDirEntry);
searcher.Filter = "(&(|(&(objectCategory=person)(objectClass=user))(objectCLass=group))(|(sAMAccountName=*{0}*)(displayName=*{0}*)(email=*{0}*)))";
//other props
searcher.PropertiesToLoad.Add(AdProperties.OBJECTCLASS);
SearchResultCollection userResult = searcher.FindAll();
foreach (SearchResult rs in userResult)
{
string objectClass = GetProp(rs, AdProperties.OBJECTCLASS);//returns "top" every time
}
如何判断AD对象是用户还是组?
修改 ObjectCategory proeprty返回一个可分辨的名称,如
CN=Person(or Group),CN=Schema,CN=Configuration,DC=...,DC=...,DC=...
所以我可以解析字符串并获得第一个CN值,但它看起来不是最好的方法。