如何编写脚本导出共享邮箱权限列表并保存为CSV文件
共享邮箱权限导出脚本
适用环境
微软Office 365/Exchange Online,本地Exchange环境可调整连接逻辑后使用。
前置要求
- 拥有Exchange管理员或全局管理员权限
- 已安装Exchange Online Management模块,未安装可执行以下命令:
Install-Module -Name ExchangeOnlineManagement
单个共享邮箱权限导出
对应shared_admin@business.com的查询场景,执行步骤如下:
- 连接Exchange Online
Connect-ExchangeOnline -UserPrincipalName 你的管理员账号@business.com - 执行导出脚本
# 定义目标共享邮箱地址 $sharedMailbox = "shared_admin@business.com" # 定义CSV导出路径 $exportPath = "C:\共享邮箱权限导出.csv" # 筛选有效权限,排除系统内置账号 $mailboxPermissions = Get-MailboxPermission -Identity $sharedMailbox | Where-Object { $_.User -notmatch "NT AUTHORITY|S-1-" -and $_.AccessRights -contains "FullAccess" } # 构造符合要求的导出数据 $exportList = $mailboxPermissions | ForEach-Object { [PSCustomObject]@{ Username = $_.User.ToString().Split('\')[-1] Access = "Full Access" Mailbox = $sharedMailbox } } # 导出为UTF8编码的CSV文件 $exportList | Export-Csv -Path $exportPath -Encoding UTF8 -NoTypeInformation
企业全量共享邮箱权限导出
如果需要导出企业内所有共享邮箱的权限清单,使用以下脚本:
# 定义CSV导出路径 $exportPath = "C:\全量共享邮箱权限导出.csv" $exportList = @() # 获取企业所有共享邮箱 $allSharedMailboxes = Get-Mailbox -RecipientTypeDetails SharedMailbox -ResultSize Unlimited foreach ($mailbox in $allSharedMailboxes) { $mailboxPermissions = Get-MailboxPermission -Identity $mailbox.PrimarySmtpAddress | Where-Object { $_.User -notmatch "NT AUTHORITY|S-1-" -and $_.AccessRights -contains "FullAccess" } $mailboxPermissions | ForEach-Object { $exportList += [PSCustomObject]@{ Username = $_.User.ToString().Split('\')[-1] Access = "Full Access" Mailbox = $mailbox.PrimarySmtpAddress } } } $exportList | Export-Csv -Path $exportPath -Encoding UTF8 -NoTypeInformation
注意事项
- 导出的CSV格式完全符合要求,包含Username、Access、Mailbox三个字段
- UTF8编码适配Excel打开,不会出现乱码
- 本地Exchange环境仅需要将连接步骤替换为本地Exchange PowerShell连接逻辑,权限查询命令无需修改
内容的提问来源于stack exchange,提问作者oggebjure
相关产品推荐
相关产品推荐

