ObjectClass=user 和 (&(sAMAccountType=805306368)(sAMAccountName=userName)) 有什么区别?

What is the difference between ObjectClass=user and (&(sAMAccountType=805306368)(sAMAccountName=userName))?

检索 Active Directory 中特定用户的所有组。我可以使用哪个是高效过滤器?

根据您的 AD 环境 运行 所在的服务器版本,不会有任何区别。

查看 objectClass, sAMAccountName and sAMAccountType 的文档。您会注意到在这些页面上列出的 属性 是 "Is Indexed"。这会告诉您该属性是否已在每个服务器版本中编制索引。 sAMAccountNamesAMAccountType 一直被编入索引,objectClass 在 Windows Server 2008 中开始被编入索引。

如果您要查找特定帐户,则只需要查询中的 sAMAccountName

(sAMAccountName=userName)

这将执行得非常快,因为 sAMAccountName 已编入索引。您可能想要包含 sAMAccountTypeobjectClass 的唯一原因是您不知道它是什么类型的对象,并且您想要确保您只获得一个用户帐户。

您提到要检索用户的所有组,因此请看一下我写的关于此的文章:Finding all of a user’s groups。代码示例是 C#,但原理适用于任何语言。