В 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