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

解决O365迁移问题:Exchange通讯组移除无邮箱用户的PowerShell方案

移除通讯组中无PrimarySmtpAddress的用户并导出名单

PowerShell批量处理脚本

以下脚本可自动遍历所有通讯组,移除其中PrimarySmtpAddress为空的成员,并将被移除用户的信息导出到CSV文件:

# 定义导出文件路径,可根据需求修改
$exportPath = "C:\Temp\RemovedGroupMembers.csv"
# 自动创建目标文件夹(如果不存在)
$folderPath = Split-Path -Path $exportPath -Parent
if (-not (Test-Path -Path $folderPath)) {
    New-Item -Path $folderPath -ItemType Directory | Out-Null
}

# 初始化存储被移除用户信息的数组
$removedMembers = @()

# 遍历所有通讯组(如需指定特定组,替换为 Get-DistributionGroup -Identity "组名称1","组名称2")
Get-DistributionGroup | ForEach-Object {
    $currentGroup = $_
    # 获取当前通讯组的所有成员
    $groupMembers = Get-DistributionGroupMember -Identity $currentGroup.Identity -ResultSize Unlimited
    # 筛选出无PrimarySmtpAddress的成员
    $invalidMembers = $groupMembers | Where-Object { 
        $_.PrimarySmtpAddress -eq $null -or $_.PrimarySmtpAddress -eq "" 
    }

    if ($invalidMembers.Count -gt 0) {
        foreach ($member in $invalidMembers) {
            # 移除成员(-Confirm:$false 跳过确认提示,如需手动确认可删除此参数)
            Remove-DistributionGroupMember -Identity $currentGroup.Identity -Member $member.Identity -Confirm:$false
            # 记录移除信息
            $removedMembers += [PSCustomObject]@{
                通讯组名称 = $currentGroup.Name
                通讯组邮箱 = $currentGroup.PrimarySmtpAddress
                用户姓名 = $member.Name
                用户标识 = $member.Identity
                移除时间 = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
            }
        }
    }
}

# 将移除信息导出到CSV文件
$removedMembers | Export-Csv -Path $exportPath -Encoding UTF8 -NoTypeInformation

Write-Host "操作完成,被移除用户名单已导出至:$exportPath"

脚本使用说明

  1. 权限要求:需以Exchange管理员身份打开Exchange Management Shell执行脚本
  2. 指定通讯组:如果只需处理特定通讯组,将Get-DistributionGroup替换为Get-DistributionGroup -Identity "你的组名",多个组用逗号分隔即可
  3. 预览模式:若想先查看待移除用户再执行操作,可先移除Remove-DistributionGroupMember相关代码,仅运行筛选和输出部分
  4. 编码设置:脚本使用UTF8编码导出CSV,避免中文乱码问题

手动移除方法

如果仅需处理少量通讯组,也可以手动操作:

  • Exchange管理中心(EAC):找到目标通讯组,进入「成员」页面,筛选出无邮箱地址的用户,选中后点击「移除」
  • PowerShell单组处理:
    # 查看目标组内无PrimarySmtpAddress的成员
    Get-DistributionGroupMember "目标组名称" | Where-Object { $_.PrimarySmtpAddress -eq $null -or $_.PrimarySmtpAddress -eq "" }
    # 确认后执行移除
    Get-DistributionGroupMember "目标组名称" | Where-Object { $_.PrimarySmtpAddress -eq $null -or $_.PrimarySmtpAddress -eq "" } | Remove-DistributionGroupMember -Identity "目标组名称" -Confirm:$false
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 13:50:41