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

如何用PowerShell导出所有动态通讯组成员至CSV文件

批量导出所有动态通讯组成员至CSV文件

问题背景

已知获取单个动态通讯组成员的PowerShell命令:

$lister = Get-DynamicDistributionGroup -Identity "atlanta-members@incose.net"
Get-Recipient -RecipientPreviewFilter ($lister.RecipientFilter)

需要编写循环脚本,导出所有动态通讯组的成员信息(包含动态通讯组名称、用户主体名称)到CSV文件,示例输出格式如下:

'memlist', 'hal.jordan@dreamteam.com'
'memlist', 'clark.kent@dreamteam.com'
'otherlist', 'hal.jordan@dreamteam.com'
'otherlist', 'tony.stark@dreamteam.com'

已构思初步框架,但不清楚如何写入CSV:

$dynlists = get-dynamicdistributiongroup
ForEach ($dynlist in $dynlists)
{ # Get Dyn list members
     $lister = Get-DynamicDistributionGroup -Identity $dynlist | Get-Recipient -RecipientPreviewFilter ($lister.RecipientFilter)}

完整解决方案

以下脚本可直接实现需求,核心是构建规范的自定义对象后统一导出:

# 初始化空数组存储所有结果
$allMemberData = @()

# 获取所有动态通讯组
$allDynGroups = Get-DynamicDistributionGroup

# 遍历每个动态通讯组
foreach ($group in $allDynGroups) {
    # 获取当前组的成员列表
    $groupMembers = Get-Recipient -RecipientPreviewFilter $group.RecipientFilter
    
    # 为每个成员生成包含组名和用户主体名的对象
    foreach ($member in $groupMembers) {
        $memberEntry = [PSCustomObject]@{
            'Group Name' = $group.Name
            'User Principal Name' = $member.UserPrincipalName
        }
        $allMemberData += $memberEntry
    }
}

# 导出到指定路径的CSV文件,可自行修改路径
$allMemberData | Export-Csv -Path "D:\DynamicGroupMembers.csv" -NoTypeInformation -Encoding UTF8

关键说明

  • 无需重复调用Get-DynamicDistributionGroup,$allDynGroups已包含所有组的完整属性,直接使用$group.RecipientFilter即可
  • 用[PSCustomObject]构建统一结构的对象,确保CSV输出格式规范,避免手动拼接字符串导致的格式错误
  • Export-Csv的-NoTypeInformation参数会移除CSV开头的类型注释,让输出更简洁;-Encoding UTF8保证特殊字符正常显示
  • 如果需要中文表头,可将'Group Name'和'User Principal Name'替换为'动态通讯组名称'和'用户主体名称'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 21:29:54