В 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