如何获取用户有权访问Exchange2010的所有共享邮箱的列表|是Exchange命令行管理程序还是PowerShell?

时间:2018-07-13 21:06:24

标签: powershell scripting exchange-management-shell

  

获取邮箱| Get-MailboxPermission-用户

     

获取邮箱| Get-MailboxPermission-用户|其中{$ _。AccessRights-像“ send as *”}

     

获取邮箱| Get-ADPermission |其中{$ _。extendedRights -like“ send-as ”}

以上所有命令都不适合我

2 个答案:

答案 0 :(得分:0)

我会做这样的事情。它将输出所有共享邮箱和有权访问它的用户。对于每个用户,它显示对邮箱的访问权限。根据用户和共享邮箱的数量,可能需要一段时间才能处理。

(由于[ordered],您需要Powershell版本3或更高版本。要在Powershell 2中使用它,请删除[ordered]。然后将不保证显示属性的顺序。 )

function Get-AllMailboxPermissions {
    $allMailboxes = Get-Mailbox -ResultSize Unlimited | Sort-Object Identity

    if ($allMailboxes.Count -eq 0) {
        Write-Warning "No mailboxes found."
        return
    }
    foreach ($box in $allMailboxes) {
        $perms = $box | Get-MailboxPermission |
                        Where-Object { $_.IsInherited -eq $false -and $_.User.ToString() -ne "NT AUTHORITY\SELF" -and $_.User.ToString() -notmatch '^S-1-' } |
                        Sort-Object User

        foreach ($prm in $perms) {
            $user = Get-Recipient -Identity $($prm.User.ToString()) -ErrorAction SilentlyContinue
            # skip inactive (deleted) users
            if ($user -and $user.DisplayName) { 
                $props = [ordered]@{
                    "Mailbox"      = "$($box.Identity)"
                    "User"         = $user.DisplayName
                    "AccessRights" = "$($prm.AccessRights -join ', ')"
                }
                New-Object PsObject -Property $props
            }
        }
    }
}

您可能希望将此信息保存在csv文件中。在这种情况下,请调用以下函数:

Get-AllMailboxPermissions | Export-Csv -Path '<PATH-TO-OUTPUT.CSV>' -NoTypeInformation -Encoding UTF8 -Force

提示:如果希望通过在同一台计算机上双击来在Excel中打开csv,则Export-Csv cmdlet具有一个非常有用的开关-UseCulture。这样,csv文件中的定界符将与Excel期望的相同。

答案 1 :(得分:0)

我终于在下面使用此脚本了,在Microsoft Exchange命令行管理程序中运行此脚本,请确保在执行命令行管理程序中的脚本之前已全部授予执行策略

对用户邮箱和共享邮箱具有完全访问权限的用户

获取邮箱| Get-MailboxPermission -user $ user |其中{($ .AccessRights -eq“ FullAccess”)-和-not($ .User -eq“ NT AUTHORITY \ SELF”)} |格式表身份,用户

具有“代理发送”访问权限的用户

获取邮箱| Get-ADPermission -user $ user |其中{($ .ExtendedRights -eq“ * send-as *”)-和-not($ .User -eq“ NT AUTHORITY \ SELF”)} |格式表身份,用户