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

如何在AD通讯组导出CSV中新增成员邮箱列而非覆盖数据

修正后的PowerShell代码:提取通讯组并新增成员邮箱列

原代码的问题在于分两步执行时,第二步的成员查询结果直接覆盖了通讯组的原有数据。以下两种方案可实现保留通讯组数据并新增成员邮箱列的需求:

方案1:通讯组一行,成员邮箱作为逗号分隔列

适合需要将每个通讯组的所有成员邮箱整合在同一行的场景:

# 获取所有通讯组,指定必要属性以提升查询性能
Get-ADGroup -Filter 'GroupCategory -eq "Distribution"' -Properties mail, managedby, members, memberOf | 
    Select-Object name, 
                  mail, 
                  @{l='ManagedBy';e={$_.managedby -replace '^CN=|,.*$'}}, 
                  @{l='Members';e={$_.members -replace '^CN=|,.*$' -join ","}}, 
                  @{l='MemberOf';e={$_.memberOf -replace '^CN=|,.*$' -join ","}},
                  @{l='MemberEmails';e={
                      # 遍历通讯组成员,提取邮箱并拼接
                      $_.members | ForEach-Object {
                          Get-ADUser -Identity $_ -Properties mail | Select-Object -ExpandProperty mail
                      } | Where-Object { $_ } -join ","
                  }} | 
    Sort-Object Name, mail, ManagedBy, Members, MemberOf | 
    Export-Csv -Path DL.csv -NoTypeInformation

关键说明:

  • 替换Properties *为具体属性列表,减少AD服务器查询负载
  • 新增MemberEmails计算属性:自动查询每个成员的邮箱,过滤空值后用逗号拼接成一列
  • 一次性完成所有数据整合,直接导出CSV,避免覆盖原有通讯组数据

方案2:每个成员一行,保留所属通讯组信息

适合需要查看成员与通讯组对应关系明细的场景:

# 生成成员明细数据,每行包含成员信息及所属通讯组的完整数据
Get-ADGroup -Filter 'GroupCategory -eq "Distribution"' -Properties mail, managedby, members, memberOf | 
    ForEach-Object {
        $dl = $_
        # 封装通讯组基础信息
        $dlBaseInfo = [PSCustomObject]@{
            DLName = $dl.name
            DLMail = $dl.mail
            ManagedBy = $dl.managedby -replace '^CN=|,.*$'
            DLMemberOf = $dl.memberOf -replace '^CN=|,.*$' -join ","
        }
        # 遍历每个成员,合并通讯组与成员信息
        $dl.members | ForEach-Object {
            $user = Get-ADUser -Identity $_ -Properties mail
            $dlBaseInfo | Select-Object *, 
                @{l='SamAccountName';e={$user.SamAccountName}},
                @{l='UserName';e={$user.Name}},
                @{l='GivenName';e={$user.GivenName}},
                @{l='UserEmail';e={$user.mail}}
        }
    } | 
    Sort-Object DLName, UserName | 
    Export-Csv -Path DL_Members.csv -NoTypeInformation

关键说明:

  • 每个成员单独占一行,同时保留所属通讯组的名称、邮箱、管理者、上级组等信息
  • 清晰展示成员与通讯组的关联关系,便于后续数据筛选或分析

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:27:29