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

Вот пример

public static void main(String[] args) {
    System.out.println(add5(1));
}

public static int add5(int a) {
    return add5(a) + 5;
}

. StackOverflowError в основном - это когда вы пытаетесь что-то сделать, что, скорее всего, называет себя и продолжает бесконечность (или до тех пор, пока не даст StackOverflowError).

add5(a) будет вызывать себя, а затем снова называть себя и т. д.

0
задан Lynx 13 July 2018 в 21:10
поделиться

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.

0
ответ дан Theo 17 August 2018 в 12:08
поделиться

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

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

Get-Mailbox | Get-MailboxPermission -user $ user | Где {($ .AccessRights -eq "FullAccess") -and -not ($ .User -eq "NT AUTHORITY \ SELF")} | Идентификатор формата таблицы, Пользователь

Пользователь с доступом для доступа

Get-Mailbox | Get-ADPermission -user $ user | Где {($ .ExtendedRights -eq "* send-as *") -and -not ($ .User -eq "NT AUTHORITY \ SELF")} | Идентификатор формата таблицы, Пользователь

0
ответ дан Pragnesh Panchal 17 August 2018 в 12:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: