Вытаскиваем права доступа на папки

PowerShell LogoВ Outlook пользователь на конкретные папки может достаточно гибко раздавать права доступа другим пользователям организации. Обычно этот сценарий используется руководителями, которые делегируют часть прав на свой ящик секретарю. И в некоторый момент может понадобиться сделать простейший аудит прав. Права на конкретную папку в почтовом ящике пользователя можно получить с командлетом Get-MailboxFolderPermission. Например:

[PS] C:>Get-MailboxFolderPermission stbul:calendar | fl User, AccessRights

User         : Default
AccessRights : {AvailabilityOnly}

User         : Anonymous
AccessRights : {None}

Главная сложность в том, что в качестве основного параметра в этот командлет необходимо передавать имя/идентификатор папки. И в ответ мы получаем не конкретные значения, а объекты, которые нам интересны не полностью, а только некоторые их свойства (User и AccessRights). То есть необходимо получить полный список папок ящика пользователя и по каждой из них получить набор пар User-AccessRights. Полный список папок ящика пользователя проще всего получить через командлет Get-MailboxFolderStatistics, который вернёт как имена папок, так и их идентификаторы (которые использовать проще, чем имена папок). Итоговый скрипт выглядит примерно так:

. 'C:Program FilesMicrosoftExchange ServerV14binRemoteExchange.ps1'
Connect-ExchangeServer -auto sleep 5

$Mailbox = Get-Mailbox mailbox.name
$MbxStat = Get-MailboxFolderStatistics $Mailbox

foreach ($item in $MbxStat){
    $folder = $Mailbox.Name + ":" + $item.FolderId
    $FolderPerms = Get-MailboxFolderPermission $folder
    foreach ($FolderPerm in $FolderPerms){
        Write-Host $item.FolderPath " | " $FolderPerm.User " | " $FolderPerm.AccessRights }
}

Полезные ссылки:
Get-MailboxFolderPermission
Get-MailboxFolderStatistics

Leave a Reply

Your email address will not be published. Required fields are marked *