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

能否在AD上游过滤用户组列表(通配符匹配)以提升效率?

问题:获取AD用户所属匹配指定模式的组并优化查询性能
  • 需求:结合Get-ADUser与Get-ADGroup,筛选出用户所属组中名称匹配指定通配符模式的列表
  • 痛点:远程VPN环境下拉取用户全部组速度较慢,希望在AD查询阶段就完成组名过滤,而非先拉取所有组到本地再循环筛选,同时确认该方式是否比后过滤更高效

尝试的代码及问题

第一种尝试代码

$SEC_GROUPS = (Get-ADUser $_ –Properties MemberOf).memberof | 
Get-ADGroup -filter {Name -like "*SEC*"} -Properties Name,Description |
Select-Object Name,Description |
Sort-Object name

第二种尝试代码

$SEC_GROUPS = (get-aduser $_ -properties Memberof).memberof |
Get-ADGroup -filter 'Name -like "*SEC*"' -Properties Name,Description -ErrorAction SilentlyContinue |
select-object Name,Description |
Sort-Object Name

问题:第二种写法会错误拉取所有名称匹配*SEC*的AD组,而非仅当前用户所属的组

解决方法及优化说明

采用以下代码实现需求并优化性能:

$SEC_GROUPS = (get-aduser $_ -properties Memberof).memberof -like '*SEC*' |
Get-ADGroup -Properties Name,Description |
select-object Name,Description |
Sort-Object Name

关键说明

  • 性能优化逻辑:先对Get-ADUser返回的MemberOf属性(组的完整DN,格式为CN=SEC_xxx,OU=Groups,...)做本地通配符过滤,再将符合条件的组DN传给Get-ADGroup查询详情。这种方式大幅减少了VPN环境下的AD远程查询量,本地过滤DN的成本远低于远程拉取大量组信息,性能更优
  • 匹配规则注意:由于MemberOf返回的是组的完整DN而非单纯组名,即使组名以SEC开头,也需要在匹配模式两端加*,才能匹配到CN=SEC_xxx格式的DN内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:50:22