В 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