到目前为止,这是行不通的;
(&(objectCategory=Person)(objectClass=Group)(CN=group_in_question))
(&(objectClass=Group)(objectCategory=Group)(member=CN=group_in_question))
(&(samAccountName=%USERNAME%)(memberof=CN=group_in_question))
(&(objectCategory=person)(objectClass=user)(memberOf=cn=group_in_question,ou=Groups,dc=mydomain,dc=com))
对于这种类型的查询,有几件事情需要考虑:
如果您的查询必须搜索大型用户数据库,则应始终包含“(ObjectCategory=person)”。您想要这样做有几个原因。ObjectCategory 是一个索引属性,而 objectClass 不是,这将显着提高您在大型 AD 数据库上的查询速度。此外,同时使用 objectCategory 和 objectClass 属性将防止在查询中返回“联系人”对象。
如果您的结果集将返回超过 1000 个结果,则需要注意性能问题。在 ADUC GUI 中,您可以通过“选项”对话框更改 2000 个项目的限制,增加可能会大大减慢您的查询速度。如果您要使用 VBScript 并枚举 GetObject 结果,对于大型组来说,这也将非常非常慢。对于 Quest Powershell cmdlet,您需要包含“-sizelimit”参数以覆盖 1000 项限制:
如果您使用代码(VBScript、JScript、.Net)创建连接对象并向其添加 LDAP 查询,则需要在连接对象上设置“.pageSize”属性以获得分页结果,默认值为不返回分页结果,而是将其限制为 1000 个项目。我通常将 .pageSize 设置为 1000,因为这是最大值。
扩展嵌套组是一个棘手的问题。获取嵌套组信息的最简单方法是使用 Quest Powershell cmdlet:
从 VBscript/JScript 脚本中,您可以使用“GetObject”并枚举成员集合,测试每个成员的“用户或组”,然后递归到嵌套组中。这很慢,您不应该这样做,除非作为 VBScript 编程的练习。
最终,您可能希望学习通过直接 LDAP 查询来完成此操作。这是通过LDAP_MATCHING_RULE_IN_CHAIN运算符完成的。此运算符可能难以使用,如果您的组有深层嵌套结构,它在 DC 上可能非常昂贵。这种方法的好处是,对于非常大的组(默认情况下超过 1500 个成员),您将能够对作为组成员的用户进行查询(甚至是间接的),而不是检索组并尝试读取成员属性(必须在“大”组的特殊方法中处理。即,您获得用户对象的报告,ratehr 比您尝试读取大型属性数组的单个组对象。
如果您在使用“大型”组时遇到问题,您还可以增加 AD 在限制对 .member 属性的访问时使用的限制。
第三种语法在 LDP.EXE 中对我的一个域很有效。我通常不会将 (objectCategory=person) 放在那里,但它也可以正常工作。
当您尝试使用它时,您会返回什么样的错误?
我认为问题是查找 A 组的所有用户,而不是查找 A 用户是否属于 A 组?
如果要查找组的所有成员,请使用
如果你想找到嵌套成员也使用
如果有超过 1000 或 1500 个成员,在这种情况下 dsquery 可能不会提供结果,请使用 joeware.net 中的adfind.exe
工作了几天以尝试生成一个脚本,该脚本将从包含用户 DN 列表的文件中提取并为它们解析属性。在 JFV 的回应中看到您的网站并心脏病发作。这是我从 JFV 的回复中生成的脚本。基本上,当您可以直接从组中提取时,为什么要从文件中读取(还没有错误捕获)......这个脚本允许我将文本文件拉入 Excel 或其他电子表格应用程序并在管道上进行分隔。那时我可以进行所有我想要的排序。只是以为别人可以从我的损失中获益。:-(
这可以在 PowerShell 中使用 Quest AD cmdlet 最轻松地完成 -
然后过滤和排序!
这是我通过 VBScript 使用的东西:
枚举用户
KAPes,您正在回答我感兴趣的问题,列出 A 组的所有成员。但是,您的命令示例不起作用,因为“成员”应该是复数,
-members
. 要在格式良好的登录名、显示名和电子邮件地址表中枚举 Active Directory 组的所有成员(全部在一行上):更多信息:http ://technet.microsoft.com/en-us/library/cc755876%28WS.10%29.aspx#BKMK_group