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

按部门筛选AD用户并排除指定安全组的PowerShell求助

解决AD部门用户安全组报告的排除组问题

修正后的完整代码

Clear-Host
$Department = 'Accounts'
# 定义需要排除的组名称,可根据需求添加/修改
$ExcludedGroups = @('Domain Users', 'Domain Guests', 'Accounts Department Default')

# 初始化存储结果的集合(原代码未定义集合会报错)
$reportTable = [System.Collections.Generic.List[PSCustomObject]]::new()

# 获取指定部门的启用用户,直接获取账号名和真实姓名(提升报告可读性)
$targetUsers = Get-ADUser -Filter "department -eq '$Department' -and enabled -eq 'True'" -Properties sAMAccountName, Name

foreach ($user in $targetUsers) {
    # 获取用户的所有组,再过滤掉排除组+只保留安全组(可按需去掉安全组筛选)
    $userGroups = Get-ADPrincipalGroupMembership -Identity $user.sAMAccountName | 
        Where-Object { 
            $_.Name -notin $ExcludedGroups -and $_.GroupCategory -eq 'Security'
        } | Select-Object Name, GroupScope

    foreach ($group in $userGroups) {
        $reportEntry = [PSCustomObject]@{
            '用户名' = $user.Name
            '账号名' = $user.sAMAccountName
            '安全组名称' = $group.Name
            '组作用域' = $group.GroupScope
        }
        $reportTable.Add($reportEntry)
    }
}

# 控制台输出结果,也可导出到CSV
$reportTable | Format-Table -AutoSize
# 导出到CSV(按需启用)
# $reportTable | Export-Csv -Path "C:\Reports\Accounts_SecurityGroups.csv" -NoTypeInformation -Encoding UTF8

关键改进说明

  • 补全集合初始化:原代码里$table未定义直接调用Add()会报错,用泛型集合存储结果更高效
  • 实现排除组逻辑:Get-ADPrincipalGroupMembership没有内置过滤参数,所以先用它获取所有组,再通过Where-Object筛掉$ExcludedGroups里的目标组;额外加了安全组筛选,不需要的话删掉$_.GroupCategory -eq 'Security'即可
  • 优化AD查询效率:用字符串格式的过滤器"department -eq '$Department' -and enabled -eq 'True'"替代脚本块过滤器,符合AD模块最佳实践
  • 灵活配置排除项:把要排除的组放到数组里,批量修改更方便
  • 提升报告实用性:新增用户真实姓名字段,比仅显示账号名更直观

常见疑问解答

  1. 为什么不能直接在Get-ADPrincipalGroupMembership里过滤?
    这个cmdlet本身没有过滤参数,必须先拉取所有组再做后续筛选
  2. 怕组名拼写错怎么办?
    先运行Get-ADGroup -Filter * | Select-Object Name导出所有组的准确名称,对照着填排除列表
  3. 想按组SID排除而不是名称?
    把$ExcludedGroups换成SID数组,然后判断条件改成$_.SID -notin $ExcludedGroups,这样组名修改也不影响筛选

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 09:55:33