В этой статье мы рассмотрим, как управлять правами общего доступа к календарям пользователей в ящиках on-prem Exchange Server и Microsoft 365 через Outlook и PowerShell. Отдельно остановимся на теме просмотра доступности (free/busy) в календарях ящиков комнат или пользователей.
Довольно часто почтовому администратору нужно предоставить права доступа к календарю другого сотрудника. Например, секретарь хочет создавать, удалять и редактировать любые записи в календаре руководителя и служебном ящике переговорной комнаты, или руководитель отдела хочет видеть и иметь возможно редактировать занятость сотрудников отдела в их календарях.
Настройка общего доступа к календарю из Outlook/OWA
Пользователь может самостоятельно прямо из Outlook предоставить доступ к своему календарю. Календарь Exchange – это по сути обычная папка в ящике пользователя. Можно настроить доступ к календарю через десктопную версию Outlook или через Outlook Web Access.
Выберите нужный календарь и в его настройках нажмите Sharing and permissions.
В открывшемся окне появится текущий список пользователей и групп, которым дан доступ к вашему календарю. В нашем примере любой пользователь вашей организации (тенанта) может просматривать информацию о доступности Free/Busy в календаре (
Can view when I’m busy
). Для пользователя Henrietta предоставлены права на создание и редактирование любых событий в календаре.
Пользователь может самостоятельно отправить другому пользователю приглашение о предоставлении общего доступа к своему календарю. Нужно указать email пользователя и уровень разрешений. В этом примере я предоставлю права на Alex право на просмотр событий в моем календаре (Can view all details).
В десктопных версиях Outlook права на календарь назначаются похожим образом. Перейдите в календарь Outlook, нажмите кнопку Разрешения для календаря. В открывшемся окне появится текущий список доступа к календарю. С помощью кнопок Добавить/Удалить вы можете изменить права доступа.
Назначить права доступа к календарю в ящике Exchange/Microsoft 365 через PowerShell
Администратор организации/тенанта может предоставить доступ к календарю любого пользователя или общего почтового ящика с помощью PowerShell или Microsoft Graph API (для Microsoft 365/Azure). Кроме того, только с помощью PowerShell можно быстро предоставить права доступа на календари всех пользователей организации.
Подключитесь к своему on-prem Exchange Server или к тенанту Microsoft 365 (Exchange Online):
- Из консоли PowerShell можно удаленно подключиться к on-prem Exchange Server с любого компьютера без установки модуля EMS (Exchange Management Tools):
$ExchAdmCred = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://msk-exch1.winitpro.ru/PowerShell/ -Authentication Kerberos -Credential $ExchAdmCred
Import-PSSession $Session - Для подключения к облачному тенанту Exchange Online (Microsoft 365) с с включенной мультифакторной аутентификацией (MFA) используйте модуль Exchange Online PowerShell), он поддерживает подключение с помощью современной проверки подлинности (Modern Authentication):
Connect-ExchangeOnline -UserPrincipalName [email protected]
Текущие права доступа к календарю пользователя можно вывести с помощью команды:
Get-MailboxFolderPermission -Identity kbuldogov:\Calendar
kbuldogov:\Календарь
.В столбце User указаны пользователи, а в столбце AccessRights – права доступа. В Exchange есть ряд предопределенных ролей, используемых для общего доступа к папкам и календарю (в порядке увеличения привилегий):
- None
- AvailabilityOnly
- Contributor
- Reviewer
- NonEditingAuthor
- Author
- PublishingAuthor
- Editor
- PublishingEditor
- Owner
Чтобы предоставить другому пользователю доступ к ящику, используйте команду Add-MailboxFolderPermission. Например, чтобы предоставить права редактирования в календаре Boss1 пользователю NestorV, выполните команду:
Add-MailboxFolderPermission -Identity boss1:\Calendar -User NestorV -AccessRights Editor
Если нужен доступ только на просмотр календаря:
Add-MailboxFolderPermission -Identity boss1:\Calendar -User NestorV -AccessRights Reviewer
Чтобы удалить права на календарь:
Remove-MailboxFolderPermission -Identity boss1:\Calendar –user NestorV
Можно экспортировать в CSV файл текущие права на календари всех ящиков тенанта Azure (организации Exchange):
$Mailboxes = Get-Mailbox -ResultSize Unlimited | Select-Object UserPrincipalName
foreach ($mailbox in $Mailboxes) {
Get-MailboxFolderPermission -Identity "$($mailbox.UserPrincipalName):\Calendar" |
Select-Object @{Name="UrerPrincipalName";E={$mailbox.UserPrincipalName}},FolderName,User,AccessRights |
Export-Csv C:\PS\Exchange_Calendar_report.csv -NoTypeInformation -Append
}
Полученный CSV файл с UPN почтовых ящиков и правами доступа к каленжарю можно в дальнейшем проанализировать в Excel.
Следующий PowerShell скрипт разрешит определенному пользователю просматривать все календари в организации:
Foreach ($Mailbox in (Get-Mailbox -ResultSize Unlimited)) { Add-MailboxFolderPermission -identity "$($Mailbox.Name):\Calendar" -AccessRights Owner -User NestorV }
Управление видимостью (free/busy) в календарях ящиков Exchange/Microsoft 365
Пользователи одной организации могут просматривать информацию и доступности других пользователей или ресурсных ящиков. По-умолчанию доступна только информация Свободен/Занят.
Для просмотра не доступны ни темы, ни описания, ни местоположения для записей в календаре других пользователей.
Такое поведение обеспечивается благодаря тому, что на все ящики назначено разрешение
Default= AvailabilityOnly
. Тип разрешения AvailabilityOnly предоставляет только право на просмотр информации доступности Free/Busy.
Возможно, вы хотите, чтобы пользователи могли просматривать не только доступность, но и темы и местоположения событий в календаре определенного ящика (например, общего календаря ресурса). Следующая команда разрешит всем пользователям просматривать события в календарях всех комнат:
Foreach ($Mailbox in (Get-Mailbox -ResultSize Unlimited) | Where {$_.ResourceType -eq "Room") { Add-MailboxFolderPermission -identity "$($Mailbox.Name):\Calendar" -AccessRights AvailabilityOnly -User Default }
По-умолчанию вместо темы встречи показывается имя владельца. За это отвечает атрибут
AddOrganizerToSubject = $true
. Чтобы разрешить просматривать в календаре комнаты темы и их содержимое:
Set-CalendarProcessing room1 -DeleteComments $false -DeleteSubject $false -AddOrganizerToSubject $false
В Exchange Online вы можете настроить, разрешать ли пользователям публиковать свои календари для внешних пользователей (организаций). Откройте Exchange Admin Center и перейти в раздел Organization -> Sharing.
По умолчанию используется Default Sharing Policy, которая разрешает делиться с внешними организациями только информацией Free/Busy. Здесь вы можете ограничить список почтовых доменов, с которыми можно делиться календарями и/или изменить набор информации в календаре, которой можно делиться (темы, местоположение, организатор).