如何批量执行Remove-MailboxPermission移除邮箱完全访问权限
批量移除指定用户邮箱完全访问权限PowerShell方案
前置准备
- 操作前先连接对应Exchange环境的PowerShell会话:Exchange Online环境执行
Connect-ExchangeOnline登录,本地Exchange环境先加载Exchange管理单元并连接到目标邮箱服务器 - 首次操作前建议先导出待移除的权限列表做备份,确认范围无误后再执行删除操作,避免误删影响业务
- 所有脚本中统一将
$targetUser变量的值替换为你要取消权限的被授权账号,例如示例中的Nik Biessen
场景1:覆盖公司全量用户邮箱
脚本会自动过滤系统邮箱、资源邮箱,同时跳过目标用户自身邮箱的SELF权限(避免删除用户访问自己邮箱的默认权限导致故障),直接批量移除该用户对所有用户邮箱的FullAccess委托权限:
$targetUser = "Nik Biessen" # 获取全量用户邮箱,排除非用户类别的系统/资源/公共文件夹邮箱 Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox | ForEach-Object { # 跳过目标用户自身邮箱,避免误删默认SELF权限 if ($_.DistinguishedName -ne (Get-Recipient $targetUser).DistinguishedName) { Remove-MailboxPermission ` -Identity $_.DistinguishedName ` -User $targetUser ` -AccessRights FullAccess ` -InheritanceType All ` -Confirm:$false } }
场景2:覆盖指定列表的180个用户邮箱
先将需要操作的邮箱标识(支持显示名、邮箱地址、别名任意一种格式)整理为CSV文件,CSV第一列表头设置为MailboxIdentity,逐行填入待操作的邮箱信息,保存到本地路径例如C:\Temp\TargetMailboxList.csv,再执行以下脚本:
$targetUser = "Nik Biessen" # 导入待操作的邮箱列表 $mailboxList = Import-Csv -Path "C:\Temp\TargetMailboxList.csv" foreach ($mailbox in $mailboxList) { Remove-MailboxPermission ` -Identity $mailbox.MailboxIdentity ` -User $targetUser ` -AccessRights FullAccess ` -InheritanceType All ` -Confirm:$false }
操作校验方法
执行删除操作前后都可以运行以下命令,导出当前该用户持有的所有FullAccess权限列表,确认操作范围和执行结果:
Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox | Get-MailboxPermission -User $targetUser | Where-Object { $_.AccessRights -contains "FullAccess" -and $_.IsInherited -eq $false } | Select-Object Identity,User,AccessRights | Export-Csv -Path "C:\Temp\ExistingFullAccessPermission.csv" -NoTypeInformation -Encoding UTF8
注意事项
- 脚本中添加
-Confirm:$false参数是为了跳过单条操作的二次确认弹窗,适配批量操作场景 - 不要删除NT AUTHORITY\SELF以及系统账号持有的默认权限,否则会导致用户邮箱访问异常
- 如果执行过程中提示找不到邮箱标识,优先检查CSV中填入的邮箱名称是否和Exchange后台显示的标识一致
内容的提问来源于stack exchange,提问作者Vlad Dodin
相关产品推荐
相关产品推荐

