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

如何在PowerShell中过滤AD组输出的成员详情

提取AD组及仅含用户名的成员列表

要解决AD组成员字段包含OU/DC信息的问题,有两种实用方法:

方法一:正则快速提取(适合批量处理)

直接通过字符串处理从DistinguishedName中提取CN部分(或仅用户名),速度快,无需额外查询AD:

保留CN=前缀

Get-ADGroup -Filter * -Properties Members | 
    Select-Object CN, @{
        Name = 'Members'
        Expression = { $_.Members | ForEach-Object { ($_ -split ',')[0] } }
    }

仅提取用户名(去掉CN=)

Get-ADGroup -Filter * -Properties Members | 
    Select-Object CN, @{
        Name = 'Members'
        Expression = { 
            $_.Members | ForEach-Object {
                if ($_ -match '^CN=([^,]+)') { $matches[1] }
            }
        }
    }

方法二:通过AD查询获取准确属性(更可靠)

如果需要确保成员信息的准确性(比如处理重名用户、特殊DN格式),可以通过Get-ADUser查询用户的CN或SamAccountName:

Get-ADGroup -Filter * -Properties Members | ForEach-Object {
    $group = $_
    $memberList = $group.Members | ForEach-Object {
        # 替换为SamAccountName可获取登录名
        (Get-ADUser $_ -Properties CN).CN
    }
    [PSCustomObject]@{
        GroupName = $group.CN
        Members = $memberList -join '; '
    }
}

注意事项

  • 方法一依赖DN格式的一致性,如果AD中存在非标准DN(比如包含逗号的CN),可能需要调整正则表达式。
  • 方法二会额外查询AD,处理大量组时速度稍慢,但结果更精准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 19:22:04