Доступ к календарям ресурсных комнат

В Exchange 2007/2010 для работы с переговорными комнатами появился специальный тип объектов. По большому счёту, он является разновидностью обычного почтового ящика. После того как для всех переговорных комнат созданы эти объекты возникает вопрос каким образом пользователи могут просматривать занята переговорная комната или нет? Эту информацию выводит помощник по планированию, который не даст забронировать переговорку, если там уже что-то запланировано (это поведение можно изменить).

Помощник по планированию предоставляет информацию о занятости переговорной комнаты в не очень нагляном виде. Гораздо удобнее подключить календарь комнаты и посмотреть на какое время у переговорной комнаты назначены встречи. Но для этого необходимо будет в явном виде предоставить права доступа к календарю переговорной комнаты. Для этого можно использовать командлет Add-MailboxFolderPermission. Более того, для календаря специально можно задать группы разрешений – AvailabilityOnly и LimitedDetails. Первая группа прав позволяет в календаре просматривать только информацию о занятости комнаты, вторая – кроме этого позволяет видеть заголовки совещаний. Каждому календарю делать права доступа долго. Интереснее было бы попробовать права назначить сразу всем. С помощью Васи Гусева получился такой небольшой скрипт:

$MBX = Get-Mailbox -RecipientTypeDetails RoomMailbox
$MBX | ForEach {Add-MailboxFolderPermission -Identity ($_.Alias + ":Calendar")
-AccessRights LimitedDetails -User Default}

Илья Сазонов скинул ссылку на решение задачи в одну строку:

ForEach ($Mailbox in (Get-Mailbox -RecipientTypeDetails RoomMailbox))
{ Add-MailboxFolderPermission -Identity "$($Mailbox.Name):Calendar"
-AccessRights LimitedDetails -User Default }

Как-то так.

9 thoughts on “Доступ к календарям ресурсных комнат

  1. Традиционно пять копеек туда где говорят про PoSH+Exchange. Совершенно необязательно городить огород с переменными, обычный конвейер с ForEach сработает не хуже. Берем данные одного командлета –> пихаем в другой.
    В твоей ситуации будет все просто:
    Get-Mailbox -RecipientTypeDetails RoomMailbox | ForEach {Add-MailboxFolderPermission -Identity ($_.Alias + “:Calendar”)
    -AccessRights LimitedDetails -User Default}

  2. Получаю ошибку почему-то:
    The operation couldn’t be performed because ‘meeting_room:Calendar’ couldn’t be found.
    + CategoryInfo : NotSpecified: (0:Int32) [Add-MailboxFolderPermission], ManagementObjectNotFoundException
    + FullyQualifiedErrorId : A6F9ADB2,Microsoft.Exchange.Management.StoreTasks.AddMailboxFolderPermission

  3. А в этом скрипте разве нужно имя указывать? Он сам, вроде, найти и подставить должен.

    ForEach ($Mailbox in (Get-Mailbox -RecipientTypeDetails RoomMailbox))
    { Add-MailboxFolderPermission -Identity “$($Mailbox.Name):Calendar”
    -AccessRights LimitedDetails -User Default }

  4. Добрый день.
    Появляется аналогичная ошибка. “Календарь” тоже пробовал вместо Calendar, не помогает.
    Если таких “комнат” немного, и я готов вручную для каждой выполнить команду, как должна выглядеть команда?

  5. Извиняюсь. Как раз получилось “Календарь”. Вводил без цикла:
    Set-MailboxFolderPermission –Identity room:Календарь -User Default -AccessRights LimitedDetails

  6. Заработало при указании полного пути до объекта и подстановки слэша перед Календарь, так как он является подпапкой ящика помещения:
    Add-MailboxFolderPermission -Identity “%domainmane%/Accounts/Service Accounts/Переговорная:\Календарь” -AccessRights LimitedDetails

  7. неправильно.
    При выполнении Add-MailboxFolderPermission ругается что уже есть пермишены.
    Надо вот так:

    ForEach ($Mailbox in (Get-Mailbox -RecipientTypeDetails RoomMailbox)){ Set-MailboxFolderPermission -Identity “$($Mailbox.Name):\Calendar”-AccessRights LimitedDetails -User Default }

Leave a Reply

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