如何创建包含Exchange Server邮箱用户的AD组并定期同步更新?
在AD中创建包含Exchange邮箱用户的组并定期更新
方法一:使用AD动态分布组(自动更新,推荐)
如果你的环境支持Exchange或AD高级功能,直接创建动态分布组就能自动同步所有带邮箱的用户,无需手动维护:
- 打开Exchange管理中心(EAC)或Exchange管理控制台(EMC)
- 进入「收件人」>「组」,新建动态分布组
- 设置筛选规则:
- 直接选择收件人类型为「用户邮箱」
- 或自定义LDAP筛选器:
(&(objectCategory=person)(objectClass=user)(mail=*)),该规则会匹配所有拥有mail属性(即邮箱地址)的AD用户
- 完成创建后,组会自动实时同步符合条件的用户,不用额外操作
方法二:PowerShell脚本实现静态组定期更新
如果需要静态组(成员固定,定期刷新),可以通过脚本+定时任务完成:
步骤1:创建基础AD组
先手动创建一个空的AD安全组/分发组,例如命名为AllExchangeMailboxUsers
步骤2:编写PowerShell脚本
# 导入AD模块 Import-Module ActiveDirectory # 配置参数 $groupName = "AllExchangeMailboxUsers" $domain = "yourdomain.com" # 替换为你的域名 # 获取所有拥有邮箱的AD用户(筛选mail属性非空的用户) $mailboxUsers = Get-ADUser -Filter {mail -ne $null} -Properties mail -Server $domain # 获取当前组内成员 $currentMembers = Get-ADGroupMember -Identity $groupName -Server $domain -ErrorAction SilentlyContinue # 计算需添加/移除的成员 $usersToAdd = $mailboxUsers | Where-Object { $currentMembers -notcontains $_ } $usersToRemove = $currentMembers | Where-Object { $mailboxUsers -notcontains $_ } # 执行更新操作 if ($usersToAdd) { Add-ADGroupMember -Identity $groupName -Members $usersToAdd -Server $domain Write-Host "已添加用户:$($usersToAdd.Name -join ', ')" } if ($usersToRemove) { Remove-ADGroupMember -Identity $groupName -Members $usersToRemove -Confirm:$false -Server $domain Write-Host "已移除用户:$($usersToRemove.Name -join ', ')" }
步骤3:设置定时任务
- 打开Windows任务计划程序,新建任务
- 触发器设为每周一次(例如每周日凌晨2点)
- 操作选择「启动程序」,程序路径填
powershell.exe,参数填:-ExecutionPolicy Bypass -File "C:\Scripts\UpdateExchangeMailboxGroup.ps1"(替换为你的脚本实际路径) - 确保任务运行账号拥有AD组修改、用户读取的权限
注意事项
- 若要精准筛选Exchange邮箱用户,可使用Exchange模块的
Get-Recipientcmdlet:Get-Recipient -RecipientTypeDetails UserMailbox,再将结果同步到AD组 - 脚本运行前先测试
Get-ADUser的筛选结果,确保符合预期 - 动态分布组仅支持作为分发组,无法用于权限控制,这类场景必须用静态组
内容的提问来源于stack exchange,提问作者Norbert Yuhas
相关产品推荐
相关产品推荐

