能否用单个Exchange Online PowerShell脚本获取共享邮箱的完全访问与发送权限?
同时获取共享邮箱完全访问与发送权限的PowerShell脚本
当然可以用单个脚本同时获取这两类权限,以下是一个实用的脚本示例,它会遍历所有共享邮箱,收集每个邮箱的完全访问权限和发送权限信息,并合并输出:
# 连接到Exchange Online Connect-ExchangeOnline -ShowBanner:$false # 获取所有共享邮箱 $sharedMailboxes = Get-Mailbox -RecipientTypeDetails SharedMailbox # 初始化结果数组 $permissionResults = @() foreach ($mailbox in $sharedMailboxes) { # 获取完全访问权限 $fullAccessPermissions = Get-MailboxPermission -Identity $mailbox.Identity | Where-Object { $_.AccessRights -contains "FullAccess" -and $_.IsInherited -eq $false -and $_.User -notlike "*NT AUTHORITY\SELF*" } | Select-Object @{Name="Mailbox"; Expression={$mailbox.DisplayName}}, @{Name="MailboxEmail"; Expression={$mailbox.PrimarySmtpAddress}}, @{Name="User"; Expression={$_.User}}, @{Name="PermissionType"; Expression={"完全访问"}} # 获取发送权限 $sendAsPermissions = Get-RecipientPermission -Identity $mailbox.Identity | Where-Object { $_.AccessRights -contains "SendAs" -and $_.IsInherited -eq $false } | Select-Object @{Name="Mailbox"; Expression={$mailbox.DisplayName}}, @{Name="MailboxEmail"; Expression={$mailbox.PrimarySmtpAddress}}, @{Name="User"; Expression={$_.Trustee}}, @{Name="PermissionType"; Expression={"发送权限"}} # 将两类权限结果合并到数组中 if ($fullAccessPermissions) { $permissionResults += $fullAccessPermissions } if ($sendAsPermissions) { $permissionResults += $sendAsPermissions } } # 输出结果,可以导出到CSV方便查看 $permissionResults | Format-Table -AutoSize # 如需导出到CSV,取消注释下面一行 # $permissionResults | Export-Csv -Path "SharedMailboxPermissions.csv" -NoTypeInformation -Encoding UTF8 # 断开Exchange Online连接 Disconnect-ExchangeOnline -Confirm:$false
脚本说明:
- 首先通过
Connect-ExchangeOnline连接到Exchange Online环境,需要你有对应的管理员权限。 - 筛选出所有共享邮箱后,逐个遍历,分别用
Get-MailboxPermission和Get-RecipientPermission获取两类权限。 - 通过
Where-Object过滤掉系统默认的权限项(比如SELF权限和继承权限),只保留手动添加的权限。 - 最后将结果合并输出,也可以导出到CSV文件,方便后续查看和整理。
内容的提问来源于stack exchange,提问作者WreckTangle
相关产品推荐
相关产品推荐

