C# ActiveDirectory - check objectClass
本文关键字:objectClass check ActiveDirectory | 更新日期: 2023-09-27 18:12:11
我对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属性返回一个区别名,如
CN=Person(or Group),CN=Schema,CN=Configuration,DC=...,DC=...,DC=...
所以我可以解析字符串并获得第一个CN值,但这看起来不是最好的方法
我认为问题可能是在您的GetProp
方法中:objectClass是一个多值属性,可能在GetProp
中您只是返回第一个值,这始终是"顶部"。
如果是这种情况,您也应该检查其他值。
否则,你能发布GetProp
的实现吗?