Как получить список всех общих почтовых ящиков, к которым у пользователя есть доступ к Exchange2010 | Командная консоль Exchange или PowerShell?

Получить-Почтовый ящик | Get-MailboxPermission-пользователь

Получить-Почтовый ящик | Get-MailboxPermission -пользователь | Где {$_.AccessRights -like отправитькак*}

Получить-Почтовый ящик | Get-ADPermission | Где {$_.extendedRights - как отправить как}

Все вышеперечисленные команды у меня не работают


person Pragnesh Panchal    schedule 13.07.2018    source источник


Ответы (2)


Я бы сделал что-то вроде этого. Он выведет все общие почтовые ящики и пользователей, которые имеют к ним доступ. Для каждого пользователя отображаются права доступа к почтовому ящику. В зависимости от количества пользователей и общих почтовых ящиков обработка может занять некоторое время.

(Из-за [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

Совет. Если вы хотите открыть CSV-файл в Excel, дважды щелкнув его на том же компьютере, в командлете Export-Csv есть очень полезный переключатель -UseCulture. При этом разделитель в CSV-файле будет таким же, как и в Excel.

person Theo    schedule 14.07.2018

Наконец-то я заработал с этим скриптом ниже. Запустите этот скрипт в Microsoft Exchange Management Shell, убедитесь, что политика выполнения разрешена, прежде чем запускать скрипт в Management Shell.

Пользователь с полным доступом к почтовым ящикам пользователей и общим почтовым ящикам

Получить-Почтовый ящик | 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")} | Идентификатор таблицы форматов, пользователь

person Pragnesh Panchal    schedule 14.07.2018
comment
Ваш вопрос был Как получить список всех общих почтовых ящиков, к которым у пользователя есть доступ к Exchange 2010Exchange2010 | Командная консоль Exchange или PowerShell?. Теперь вы показываете код, который отображает только часть привилегий доступа. Мой ответ показал ВСЕ привилегии, а это именно то, что вы просили. - person Theo; 31.08.2018