Добавить календарь в outlook через powershell
В Outlook владелец календаря может поделиться им с другими пользователями и предоставить им доступ на просмотр или изменение событий в своем календаре. Общий календарь может быть основным календарем владельца или пользовательским календарем, созданным владельцем. Владелец также может предоставить делегату для своего основного календаря право выполнять действия от его имени, получать приглашения на собрания или отвечать на них, а также создавать или изменять элементы в основном календаре.
Что касается программного кода, Microsoft Graph поддерживает чтение и запись событий в календарях, доступ к которым был предоставлен другими пользователями, а также чтение общих календарей и обновление их имен для получателей общего доступа. Поддержка также относится к делегированным календарям. Далее в этой статье описывается чтение событий в общем или делегированном календаре. Сведения о создании событий см. в статье Создание событий Outlook в общем или делегированном календаре.
Получатель общего доступа: получение общего календаря или его событий непосредственно из почтового ящика владельца календаря
В трех примерах, приведенных ниже, используется следующий сценарий: Артем поделился своим основным календарем с Мартой в Outlook и предоставил ей разрешения на чтение. Если Марта войдет в приложение и предоставит делегированные разрешения (Calendars.Read.Shared или Calendars.ReadWrite.Shared) от своего имени, приложение сможет получить доступ к основному календарю Артема и его событиям непосредственно из почтового ящика Артема.
В трех примерах указан идентификатор владельца (ИД пользователя или имя участника-пользователя Артема) и ярлык calendar . У них есть доступ к идентификаторам календаря и событий, которые соответствуют почтовому ящику владельца. При указании идентификаторов календаря и событий в почтовом ящике получателя общего доступа (идентификатор пользователя или имя участника-пользователя Марты) будет возвращена ошибка. Сведения об использовании идентификаторов календаря и событий, которые соответствуют почтовому ящику получателя общего доступа, см. в разделе Получатель общего доступа: получение общего пользовательского календаря или его событий из почтового ящика получателя общего доступа.
Примечание. Разрешения общего доступа (Calendars.Read.Shared или Calendars.ReadWrite.Shared) позволяют читать или записывать события в общем или делегированном календаре. Они не поддерживают подписку на уведомления об изменениях элементов в таких папках. Чтобы настроить подписки на уведомления об изменениях событий в общем, делегированном или любом другом календаре пользователя или ресурса в клиенте, используйте разрешение приложения Calendars.Read.
Марта: получение общего основного календаря непосредственно из почтового ящика Артема
Войдя в систему под именем Марты, получите основной календарь, которым Артем поделился с Мартой, непосредственно из почтового ящика Артема.
Марта: получение события общего основного календаря непосредственно из почтового ящика Артема
При выполнении входа в систему под именем Марты приложение может получить определенное событие основного календаря, которым Артем поделился с Мартой, непосредственно из его почтового ящика.
Марта: получение всех событий общего основного календаря из почтового ящика Артема
Войдя в систему под именем Марты, получите все события основного календаря, которым Артем поделился с Мартой, непосредственно из его почтового ящика.
Те же возможности GET доступны в том случае, если Артем делегировал Марте доступ к своему основному календарю или если Артем делегировал Марте весь свой почтовый ящик.
Если Артем не предоставил общий доступ к своему основному календарю и не делегировал его Марте, при указании ИД пользователя или имени участника-пользователя Артема будет возвращена ошибка.
Получатель общего доступа: получение общего пользовательского календаря или его событий из почтового ящика получателя общего доступа
Если Артем поделился пользовательским календарем (например, календарем «Детские праздники») с Анной и Анна предоставила делегированные разрешения (Calendars.Read или Calendars.ReadWrite), приложение может получить события или календарь из локальной копии календаря Артема в почтовом ящике Анны, как описано ниже.
Войдя в систему под именем Анны, используйте один из следующих запросов, чтобы получить все календари, к которым Анна имеет доступ, в том числе общий пользовательский календарь.
Успешный отклик включает код ответа HTTP 200 и коллекцию календарей, к которым Анна имеет доступ, в том числе календарь («Детские праздники») с именем владельца, указанным как "Артем Кузнецов", в качестве второго календаря. Для получателя общего доступа, Анны, свойство canShare общего календаря всегда имеет значение "false".
Войдя в систему под именем Анны, получите общий календарь или одно или несколько событий общего календаря, используя в отклике идентификатор второго календаря с шага 1. Идентификаторы общего календаря и его события соответствуют локальной копии календаря Артема в почтовом ящике Анны.
Большая часть данных советов подходит для корпоративных сред при использовании почтового сервера на базе Microsoft Exchange Server.
Предоставить свой календарь в общий доступ
- Переходим в раздел Календарь в нижней части программы:
Подключить общий календарь в Outlook
- Кликаем по Календарь в нижней части программы:
Создать общий календарь Exchange
Данная возможность впервые появилась в Exchange 2007.
Через графическую консоль
- В консоли управления Exchange переходим в Настройка получателей - кликаем правой кнопкой по Почтовый ящик - Создать почтовый ящик:
С помощью Powershell
Создаем общий почтовый ящик:
New-Mailbox -Name 'Общий календарь предприятия' -Alias 'public_calendar' -OrganizationalUnit 'dmosk.local/Служебные/Общие почтовые ящики' -UserPrincipalName 'public_calendar@dmosk.local' -SamAccountName 'public_calendar' -Room
* OrganizationalUnit — место размещения учетной записи в Active Directory.
Чтобы назначить права, можем воспользоваться рекомендациями выше или ввести следующие командлеты powershell:
Add-MailboxPermission 'Общий календарь предприятия' -User:"dmosk" -AccessRights:FullAccess
* предоставляем полный доступ на управление учетной записью администратору dmosk
Add-MailboxFolderPermission -Identity 'Общий календарь предприятия:\Календарь' -User user -AccessRights Owner
* делаем пользователя user владельцем календаря.
** если у нас английская версия Exchange, вместо Календарь пишем Calendar
Чтобы изменить права на календарь пользователю, которому привилегии уже выдавались, используем не Add- а Set-:
Set-MailboxFolderPermission -Identity 'Общий календарь предприятия:\Календарь' -User user -AccessRights Reviewer
* в данном случае, мы изменили права с владельца на читателя.
Как запросить доступ к чужому календарю
Запрос появится автоматически при подключении общего календаря, если на него нет прав.
Управление правами чужого календаря
Посмотреть текущие права на календарь пользователя можно командой:
Get-MailboxFolderPermission -Identity 'Учетная запись:\Календарь'
* в английской версии Календарь меняем на Calendar.
Для того, чтобы задать нужные права, подключаемся к Exchange. Запускаем Powershell для Exchange от администратора и вводим:
Add-MailboxFolderPermission -Identity 'Учетная запись:\Календарь' -User 'dmosk' -AccessRights Owner
* где Учетная запись — имя учетной записи, календарем которой хотим управлять; dmosk — учетная запись, которой даем права; AccessRights — назначаемые права.
* Варианты для прав:
- Author: создание документов, удаление своих, редактирование своих, просмотр папок, чтение документов
- Contributor: создание документов, просмотр папок
- Editor: создание документов, удаление, удаление своих, редактирование, редактирование своих, просмотр папок, чтение документов
- None: просмотр папок
- NonEditingAuthor: создание документов, просмотр папок, чтение документов
- Owner: создание документов, создание папок, удаление, удаление своих, редактирование, редактирование своих, управление папками, чтение документов
- PublishingEditor: создание документов, создание папок, удаление, удаление своих, редактирование, редактирование своих, просмотр папок, чтение документов
- PublishingAuthor: создание документов, создание папок, удаление своих, редактирование своих, просмотр папок, чтение документов
- Reviewer: просмотр папок, чтение документов
Для управления всеми календарями можно ввести следующую команду:
Foreach ($Mailbox in (Get-Mailbox -ResultSize Unlimited))
* данной командой мы перебираем массив почтовых ящиков и для каждого из них назначаем права Owner пользователю Иванов Иван Иванович.
24.11.2021
itpro
Exchange, Microsoft 365, Office 365, PowerShell
Один комментарий
В этой статье мы рассмотрим, как управлять правами общего доступа к календарям пользователей в ящиках 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 предоставлены права на создание и редактирование любых событий в календаре.
В десктопных версиях Outlook права на календарь назначаются похожим образом. Перейдите в календарь Outlook, нажмите кнопку Разрешения для календаря. В открывшемся окне появится текущий список доступа к календарю. С помощью кнопок Добавить/Удалить вы можете изменить права доступа.
Назначить права доступа к календарю в ящике Exchange/Microsoft 365 через PowerShell
Администратор организации/тенанта может предоставить доступ к календарю любого пользователя или общего почтового ящика с помощью PowerShell или Microsoft Graph API (для Microsoft 365/Azure). Кроме того, только с помощью PowerShell можно быстро предоставить права доступа на календари всех пользователей организации.
Для управления доступом к календарю можно использовать все принципы, описанные в статье про управление правами доступа к папкам Exchange/Office 365.
Подключитесь к своему on-prem Exchange Server или к тенанту Microsoft 365 (Exchange Online):
-
Из консоли PowerShell можно удаленно подключиться к on-prem Exchange Server с любого компьютера без установки модуля EMS (Exchange Management Tools):
Текущие права доступа к календарю пользователя можно вывести с помощью команды:
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 @>,FolderName,User,AccessRights |
Export-Csv C:\PS\Exchange_Calendar_report.csv -NoTypeInformation -Append
>
Полученный CSV файл с UPN почтовых ящиков и правами доступа к каленжарю можно в дальнейшем проанализировать в Excel.
Следующий PowerShell скрипт разрешит определенному пользователю просматривать все календари в организации:
Foreach ($Mailbox in (Get-Mailbox -ResultSize Unlimited))
Управление видимостью (free/busy) в календарях ящиков Exchange/Microsoft 365
Пользователи одной организации могут просматривать информацию и доступности других пользователей или ресурсных ящиков. По-умолчанию доступна только информация Свободен/Занят.
Для просмотра не доступны ни темы, ни описания, ни местоположения для записей в календаре других пользователей.
Такое поведение обеспечивается благодаря тому, что на все ящики назначено разрешение Default= AvailabilityOnly . Тип разрешения AvailabilityOnly предоставляет только право на просмотр информации доступности Free/Busy.
Возможно, вы хотите, чтобы пользователи могли просматривать не только доступность, но и темы и местоположения событий в календаре определенного ящика (например, общего календаря ресурса). Следующая команда разрешит всем пользователям просматривать события в календарях всех комнат:
Foreach ($Mailbox in (Get-Mailbox -ResultSize Unlimited) | Where
По-умолчанию вместо темы встречи показывается имя владельца. За это отвечает атрибут AddOrganizerToSubject = $true . Чтобы разрешить просматривать в календаре комнаты темы и их содержимое:
Set-CalendarProcessing room1 -DeleteComments $false -DeleteSubject $false -AddOrganizerToSubject $false
В Exchange Online вы можете настроить, разрешать ли пользователям публиковать свои календари для внешних пользователей (организаций). Откройте Exchange Admin Center и перейти в раздел Organization -> Sharing.
По умолчанию используется Default Sharing Policy, которая разрешает делиться с внешними организациями только информацией Free/Busy. Здесь вы можете ограничить список почтовых доменов, с которыми можно делиться календарями и/или изменить набор информации в календаре, которой можно делиться (темы, местоположение, организатор).
11.12.2018
itpro
Exchange, PowerShell
комментариев 12
Клиентские и серверные правила Outlook
Администратору Exchange следует отличать правила Outlook, которые функционируют на стороне клиента (Client-side rules) и на стороне сервера (Server-side rules).
Просмотр правил в ящике Exchange
Чтобы вывести список правил в ящике Exchange, запустите консоль EMS и выполните следующую команду PowerShell:
Get-InboxRule –Mailbox abivanov
Как вы видите, для каждого правила выводится его имя, статус (Enabled: True/False), приоритет (Proirity) и RuleIdentity.
Можно вывести более подробную информацию о конкретном Inbox правиле, указав его имя:
Get-InboxRule -Mailbox abivanov -Identity "HelpDesk"| fl
Обычно содержание правила можно понять по полю Description:
Get-InboxRule -Mailbox abivanov -Identity "HelpDesk "| Select Name, Description | fl
Поиск правил в ящиках пользователей Exchange
В некоторых случаях администратору нужно найти определенные правила в ящике пользователя. Например, вам нужно найти все правила, в которых выполняется удаление писем:
Get-InboxRule -Mailbox abivanov | ?
Также может быть сценарий, когда по запросу службы информационной безопасности, вам нужно найти во всех ящиках организации правила автоматической пересылки почты:
foreach ($i in (Get-Mailbox -ResultSize unlimited)) < Get-InboxRule -Mailbox $i.DistinguishedName | where | fl MailboxOwnerID,Name,ForwardTo >> C:\PS\All_Mailbox_Forward_Rules.txt >
Создаем правило для входящей почты Outlook с помощью PowerShell
Создать новое правило Outlook для входящей почты можно с помощью командлета Exchange New-InboxRule. К примеру, вы хотите переслать все письма с определенными ключами в теме письма в другой ящик. Выполните команду:
New-InboxRule -Name ZenossAlerttoHelpdesk -Mailbox rootadmin -SubjectContainsWords "Zenoss Alert" -ForwardTo "Helpdesk"
New-InboxRule -Mailbox abivanov –name SecretaryRule -From secretary@winitpro.ru –SubjectContainsWords “Годовое собрание" -ApplyCategory -MarkImportance 2
Для всех пользователей в определенном OU создадим правило, которое автоматически перемещает письма с темой «Казино» в каталог «Нежелательная почта» (Junk Email).
$mbxs = Get-mailbox -organizationalUnit Managers
$mbxs | % < >
$mbxs | %
Список все доступных условий (Conditions), которые вы можете использовать в правилах Exchange можно вывести так:
Get-InboxRule -Mailbox abivanov | get-member
Чтобы изменить какое-то правило Outlook, нужно использовать командлет Set-InboxRule, например:
Set-InboxRule -Mailbox abivanov –identity SecretaryRule -FromAddressContainsWords
Совет. Размер правил в ящике Microsoft Exchange ограничен (см. статью). В Exchange 2003 размер правил ограничен 32 Кб, а в Exchange 2016/2013/2010 – под правила выделяется 64 кб. Если при редактировании правил появляется ошибка:
Некоторые правила невозможно загрузить в Microsoft Exchange, и они были отключены. Некоторые параметры не поддерживаются, или не хватает места для хранения всех ваших правил
Вы можете изменить размер квоты под правила (RulesQuota) до 256 Кб, выполнив команду:
Set-Mailbox -identity abivanov -RulesQuota 256Kb
Как отключить и удалить входящее правило Outlook из PowerShell
Чтобы отключить конкретное правило Outlook, нужно указать:
Disable-Inboxrule –Mailbox abivanov -Identity “SecretaryRule”
При этом его статус (Enabled) меняется False и оно более не применяется ко входящим письмам.
Чтобы удалить правило, выполните:
Remove-Inboxrule –Mailbox abivanov -Identity SecretaryRule
Команда запросит подтверждение, просто введите Y. Чтобы удалить все правила в определенном ящике, выполните:
Get-inboxrule -mailbox abivanov | disable-inboxrule
Предыдущая статья Следующая статья
Поиск и удаление писем в ящиках Exchange Server (Microsoft 365) с помощью PowerShell
Не работает поиск в Outlook: решение проблемы
Управление отключенными ящиками в Exchange
Ручная настройка подключения к Exchange в Outlook 2016
Спасибо ! Интересная тема.
Тема интересная.
Но еще интереснее обсудить настройку OoF на стороне почтового сервера, когда она настроена у клиента с пересылкой писем на другой почтовый ящик.
В Exchange 2013 такое правило (скрытое правило), можно увидеть, указав ключ -IncludeHidden.
А вот в Exchange 2010 такого ключа нет. И остаётся только Exchange Web Services (EWS) API. Вот про него очень не хватает статьи!
Спс и Вас с наступающими!
По поводу EWS даже не знаю, очень уже непопулярная тематика… Один с таким объемом не справлюсь.
Интересно, это у нас так криво настроили Exchange (подрядчики) или автор про такую фичу забыл упомянуть ? (;
Какая версия Exchnage? У пользователя уже были правила? Не может быть, что проблема связана с превышением лимита на размер правил?
Exch 2013, Outlook 2016.
У пользователя было только 2 правила. Шибко разбираться не стал, поверил спецам — те сказали, да есть такая фича у Exchange. И, вроде, ссылку давали на оффсайт — мельком глянул, удостоверился и забыл… Странно, что это малоизвестно… Может я все-таки что-то напутал, ок — если найду, то скину ссылку!
Собственно, искать и не пришлось — все есть в описаниях командлетов на оффсайте:
New-InboxRule
When you create, modify, remove, enable, or disable an Inbox rule in Exchange PowerShell, any client-side rules disabled by Microsoft Outlook and outbound rules are removed.
Set-InboxRule
The Set-InboxRule cmdlet allows you to modify the rule conditions, exceptions, and actions.
When you create, modify, remove, enable, or disable an Inbox rule in Exchange PowerShell, any client-side rules created by Microsoft Outlook are removed.
Или я все-таки что-то не так понимаю ??
При добавлении нового правила с помощью New-InboxRul уведомление появляется:
Confirm. Using Outlook Web App or Windows PowerShell to modify your rules will delete any rules that were previously turned off using Outlook. If you want to preserve the rules you turned off using Outlook, select «No» and use Outlook to edit your rules. Are you sure you want to proceed?
Cтарые правила не удалились несмотря на предупреждение. При этом не появилось и новое правило, лишь висит уведомление «Имеются не показанные правила, созданные в другой версии Outlook или OWA»…
New-InboxRule — показывает и старые и новые правило… Я в задумчивости…
Да, такое было предупреждение, вроде…
Видимо, от настроек серверов зависит — у нас удаляются все client-side правила.
Я шибко разбираться не могу — доступ только к серверу баз данных. Да и то обрезанный.
Подскажите, плз, а есть ли возможность узнать сколько занимает конкретное правило или суммарно все правила созданные пользователем в Outlook?
Одной из удобных возможностей Outlook – возможность предоставить общий доступ к своему календарю другим пользователям в вашей организации или внешним пользователям (снаружи вашей организации). Для этого ваша ящик электронной почты должен располагаться на сервере Exchange или в Office 365 / Exchange Online.
Предоставление общего доступа к своему календарю в Outlook 2016
Каждый получатель получит приглашение, в котором будет предложено добавить ваш календарь.
Пользователи за пределами вашей организации получат URL адрес, который можно использовать для доступа к вашему календарю. В том случае, если вы и пользователь, которому вы предоставляете доступ, находятся в организациях, связанными федеративными отношениями через Office 365 или Exchange, то в приглашении будет содержаться опция предоставить доступ к своему календарю в ответ.
Ваш календарь после этого будет отображаться у пользователя в разделе Общий календарей.
Вы можете опубликовать свой календарь в интернете, сделав его доступным для всех. В этом случае календарь публикуется на сервере WebDAV, с которого он должен быть доступен другим пользователям.
Для публикации календаря в Интернете, нажмите на кнопку Опубликовать в Интернете, укажите URL адрес сервера WebDAV, укажите интервал времени календаря, который нужно опубликовать, тип доступа и параметры обновления календаря на сервере (автоматически, или только один раз).
Если вы хотите предоставить доступ к своему календарю всем пользователям, нажмите на кнопку Разрешения для календаря и для разрешения По умолчанию выберите уровень доступа (по умолчанию разрешен доступ только на доступ к информации Free/Busy time). Группа По-умолчанию соответствует любому пользователя (everyone). Вы можете изменить уровень доступа, выбрав в выпадающем списке необходимые разрешения.
На этой же вкладке можно управлять доступом к вашему календарю. Здесь вы можете добавить нового пользователя, или изменить уровень полномочий пользователя при доступе к календарю (например, можно разрешить определенному пользователю создавать, редактировать или удалять элементы календаря).
Если вы хотите отозвать общий доступ к календарю, нужно на вкладке разрешений выбрать имя пользователя, которого нужно лишить доступа, нажать кнопку Удалить и Ок.
Как подключить чужой общий календарь в Outlook 2016
Чтобы подключить календарь другого пользователя, в Outlook нажмите на кнопку Календарь в нижней части окна. Правой кнопкой мыши щелкните по разделу Мои календари -> Добавить календарь -> Из адресной книги:
В списке сотрудников найдите пользователя, чей календарь вы хотите подключить (пользователь или администратор должен предоставить вам доступ к своему календарю) и выберите его.
После этого новый календарь должен появится в списке общий календарей.
Предоставление доступа к календарю в Exchange с помощью PowerShell
В Exchange 2007 SP1 и выше вы можете создавать общий почтовый ящик, который можно использовать как общий календарь предприятия (отдела). Создать ящик можно с помощью такой команды PowerShell:
New-Mailbox -alias JuristDep -name "Календарь юр. отдела" -database "Mbx1" -org Users -shared -UserPrincipalName JuristDep@domain.corp
После этого можно предоставить доступ к календарю нового ящика для определённого пользователя организации (допустим, мы хотим предоставить полный доступ):
Add-MailboxPermission JuristDep -User:"aapetrov" -AccessRights:FullAccess
Или только на чтение:
Add-MailboxPermission JuristDep -User:"JuristUsers" -AccessRights:ReadPermission
Можно дать доступ непосредственно на папку календаря в ящике Exchange:
Add-MailboxFolderPermission -Identity 'JuristDep:\Календарь' -User aapetrov -AccessRights Owner
В английской версии Exchange вместо Календарь нужно указыват папку Calendar.
Чтобы изменить права на календарь пользователю, которому уже выданы права на календарь нужно воспользоваться командлетом Set-MailboxFolderPermission :
Set-MailboxFolderPermission -Identity 'JuristDep:\Календарь' -User aapetrov -AccessRights Reviewer
Как запросить доступ к чужому календарю
При подключении общего календаря из адресной книги, запрос на предоставление прав появится автоматически при подключении общего календаря, если на него нет прав.
Читайте также: