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

如何编写PowerShell脚本统计多个AD组去重后符合条件的用户总数

PowerShell AD组跨组去重统计用户脚本

原有单组统计脚本仅能实现组内去重,无法过滤跨组重复的用户,导致最终计数偏高,以下脚本可实现4个AD组全局去重统计,保留指定属性筛选条件。

完整脚本

# 定义目标AD组列表
$adGroups = @("group1", "group2", "group3", "group4")
# 初始化哈希表实现全局去重,利用键的唯一性自动排除重复用户
$userSet = @{}

foreach ($group in $adGroups) {
    # 获取当前组的所有成员
    $groupInfo = Get-ADGroup -Identity $group -Properties Members
    foreach ($member in $groupInfo.Members) {
        try {
            # 获取用户对象并加载extensionAttribute4属性
            $adUser = Get-ADUser -Identity $member -Properties extensionAttribute4
            # 匹配属性筛选条件
            if ($adUser.extensionAttribute4 -eq "o365_facstaff") {
                # 以用户SamAccountName作为唯一标识,不存在则加入集合
                if (-not $userSet.ContainsKey($adUser.SamAccountName)) {
                    $userSet[$adUser.SamAccountName] = $adUser
                }
            }
        }
        catch {
            # 跳过组内非用户类型的成员(如嵌套组、计算机账户等)
            continue
        }
    }
}

# 输出最终统计结果
Write-Host "符合条件的去重用户总数:$($userSet.Count)"

逻辑说明

  • 提前把4个目标AD组存入数组批量处理,减少冗余代码
  • 使用哈希表做全局去重,只要用户在任意组出现过就不会被重复计数,彻底解决跨组重复统计的问题
  • 保留extensionAttribute4等于o365_facstaff的筛选规则,仅统计符合要求的用户
  • 新增异常处理逻辑,跳过组内嵌套的非用户对象,避免脚本运行报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:45:02