不同权限用户执行Get-ADUser返回结果不一致的技术求助
Active Directory用户查询结果数量不一致:普通用户与域管理员权限差异问题
问题描述
在已部署完整基础设施(含用户、计算机、GPO等)的Active Directory环境中,执行以下PowerShell脚本查询用户账户:
(Get-ADUser -LDAPFilter "((memberOf=CN=All,OU=Groups,DC=domain,DC=de))").Count
- 以仅拥有部分服务器(如文件服务器)管理员权限的普通用户身份运行时,仅返回600个账户
- 以域管理员身份运行时,返回正确的11000个账户
- 无论在域控制器还是其他服务器运行,结果一致
- 已尝试将
ResultSetSize设置为$null,无任何变化
问题解答
1. 问题原因
这是Active Directory的权限限制与查询默认行为共同导致的:
- 默认情况下,普通域用户对AD中部分对象(尤其是位于受保护OU或特殊容器内的用户)没有读取权限,查询时AD会自动过滤掉当前账户无权限访问的对象
- 你看到的600个是当前账户有权限读取的用户总数,剩余10400个用户所在的容器/OU,当前账户没有读取权限,因此不会被返回
ResultSetSize设置为$null是取消结果数量上限,但前提是你有权限读取所有匹配对象,权限不足时该参数不会生效
2. 解决方法
有两种可行方案:
- 临时方案:使用域管理员权限执行查询,或请求域管理员生成该组的用户列表后提供给你
- 长期方案:请求域管理员为你的账户配置足够的AD读取权限,具体权限要求见第3点
3. 所需权限(无需域管理员)
要获取完整的用户列表,你的账户需要在以下范围拥有读取权限:
- 目标组
CN=All,OU=Groups,DC=domain,DC=de的成员属性读取权限 - 该组所有成员用户所在的OU/容器的读取权限(包括用户对象本身的读取权限)
- 如果用户分布在多个OU,需确保所有包含这些用户的OU都配置了对应的读取权限
具体操作可由域管理员通过AD用户和计算机控制台的「安全」选项卡,为你的账户添加以下权限:
- 对目标OU/容器:
读取所有属性、列出内容 - 对目标组:
读取成员属性
推荐搜索关键词
- Active Directory user query permission filter
- AD Get-ADUser returns partial results
- Read permissions for AD group members
- Active Directory default user read access restrictions
内容的提问来源于stack exchange,提问作者cBoLsmUiEc
相关产品推荐
相关产品推荐

