在处理查询AD用户信息的应用程序时,我一直在检索域控制器作为结果的一部分。
使用C# DirectorySearcher以下filter:
"(objectClass=User)"
经过一番挖掘,我注意到,对于我们的DC,objectClass属性设置为:
top; person; organizationalPerson; user; computer
它让我感到奇怪。 然而,我没有任何参考的框架,也没有能够find任何具体的文件。
有人可以请告知,如果这看起来是正确的,如果不是,它应该是什么。 此外,任何文件/最佳做法/标准将赞赏。
从技术上讲,你必须过滤2个值。 首先, objectCategory=Computer因为域控制器与其他任何计算机相似,其次,您需要在userAccountControl属性上过滤标志,查找带有ADS_UF_SERVER_TRUST_ACCOUNT标志的服务器。
ADS_UF_SERVER_TRUST_ACCOUNT是十进制的0x1000或8192。 使用1.2.840.113556.1.4.803运算符完成binary and主动目录属性。 所以,你的查询最终将如下所示:
(&(objectCategory=computer)(userAccountControl:1.2.840.113556.1.4.803:=8192))
(&(objectCategory = computer)(primaryGroupId = 516))可能会更好地执行域控制器对象的另一个查询。 521为只读域控制器。 或者对于两者:(&(objectCategory = computer)(|(primaryGroupId = 516)(primaryGroupId = 521)))
在小域中可能不是很明显,但是在具有大量计算机对象的域中,userAccountControl:查询可能需要很长时间。
如果对Active Directory站点和服务中显示的服务器对象执行查询,则这将是:(objectCategory = server),并且基础将需要是configuration命名上下文。