You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Get-EffectiveAccess查询32+组时域控制器超时无响应原因咨询

Troubleshooting Performance Issues with Get-EffectiveAccess for Users in 32+ AD Groups

我来帮你拆解这个AD权限查询的性能问题——我之前也遇到过类似的场景,核心问题和域控制器的权限评估负载直接相关,咱们一步步分析:

问题根源

你当前的流程是先通过:

Get-ADPrincipalGroupMembership -Identity $user2 | select distinguishedName

获取用户的所有AD组,再逐个调用Get-EffectiveAccess。当用户组数量达到32个及以上时,每次Get-EffectiveAccess调用都会让域控制器执行嵌套权限计算:它需要遍历每个组的权限规则、继承关系、拒绝项,还要合并用户自身的权限,32个组的组合会让计算量呈指数级增长。单纯加5秒延迟只是分散了请求,但没有减少单次请求的负载,所以问题依然存在。

可行的优化方案

1. 减少Get-EffectiveAccess的调用次数(最有效)

不要遍历每个组单独查询,直接用用户主体调用Get-EffectiveAccess——它会自动包含用户的所有组成员身份,一次计算就能得到完整的有效权限,避免了重复计算的开销:

$targetResource = "CN=SharedFolder,OU=Resources,DC=contoso,DC=com"
$user = Get-ADUser -Identity $user2
Get-EffectiveAccess -Identity $user -Resource $targetResource

如果必须按组排查权限,可以先过滤掉内置默认组(比如Domain Users)或无特殊权限的组,只保留需要重点检查的组,减少计算量。

2. 降低域控制器的负载压力

  • 指定低负载的域控制器:通过-Server参数选择当前负载较低的DC执行查询,避免冲击核心业务DC:
    Get-ADPrincipalGroupMembership -Identity $user2 -Server "DC02.contoso.com" | select distinguishedName
    
  • 拆分查询批次:如果必须遍历组查询,把32+个组分拆成每8-10个组为一批,批次之间加入30秒以上的间隔,给DC足够的时间释放资源,而不是单次请求压垮DC。

3. 排查域控制器的性能瓶颈

  • 检查DC的CPU、内存和磁盘IO使用率:权限计算是CPU密集型操作,如果CPU持续高负载,需要考虑升级硬件或添加额外DC分担负载。
  • 定期整理AD数据库:用ntdsutil工具清理AD数据库碎片,提升查询和计算的效率。

内容的提问来源于stack exchange,提问作者Ben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:53:45