如何使用PowerShell将CSV中的成员添加到嵌套通讯组(DL)中
实现层级通讯组批量成员添加(Level4到Level3为例)
问题核心
原有代码的问题是直接遍历所有CSV行,会重复对同一个Level3组执行添加操作,同时未过滤空值容易触发无效请求。可以通过对Level3分组的方式,一次性拿到单个Level3对应的所有Level4成员,再批量处理。
实现代码
第一步:导入CSV并按Level3分组
先过滤掉Level3或Level4为空的无效行,再以Level3为键做分组:
# 导入CSV文件 $DLlist = Import-Csv C:\tempfile\Book2.csv # 按Level3分组,获取每个Level3对应的所有Level4成员 $level3Groups = $DLlist | Where-Object { $_.Level3 -and $_.Level4 } | Group-Object -Property Level3
第二步:遍历分组执行添加操作
增加成员存在性校验,避免重复添加报错:
foreach ($level3Group in $level3Groups) { $currentLevel3DL = $level3Group.Name # 拿到当前Level3组对应的所有去重后的Level4成员 $level4Members = $level3Group.Group.Level4 | Select-Object -Unique foreach ($level4DL in $level4Members) { # 可选:校验成员是否已存在,不需要可以删除这段判断直接执行添加 $isExist = Get-DistributionGroupMember -Identity $currentLevel3DL | Where-Object { $_.Alias -eq $level4DL -or $_.PrimarySmtpAddress -eq $level4DL } if (!$isExist) { Add-DistributionGroupMember -Identity $currentLevel3DL -Member $level4DL Write-Host "添加成功:$level4DL → $currentLevel3DL" } else { Write-Host "跳过重复成员:$level4DL 已在 $currentLevel3DL 中" } } }
扩展说明
如果要实现更高层级的成员添加(比如Level3加入Level2、Level2加入Level1等),只需要替换代码中对应的层级字段即可,逻辑完全一致。
内容的提问来源于stack exchange,提问作者Jeetcu
相关产品推荐
相关产品推荐

