Создать группу рассылки в outlook powershell
Я думаю, Вы не однократно сталкивались с необходимостью сообщить Вашему контрагенту по телефону Ваш адрес электронной почты. Диктовать вместе “betke” последовательность “Борис-Елена-Тимофей-Константин-Елена” меня уже утомило.
Необходимо найти решение и для людей, не проходивших обучения на военной кафедре Натыкаюсь последнее время на любопытное решение: некоторые контрагенты в качестве lname используют свой внутренний телефонный номер. И в этом есть смысл – сообщить по телефону 3 цифры куда проще, чем кучу латинских букв.
Приступаем к реализации данного подхода на Exchange Server.
Выбираем атрибуты
Атрибут, который планируем задействовать под внутренний номер, выбрали. Теперь планирую следующие шаги:
- сделаю выгрузку из AD в .csv с тем, чтобы облегчить экспорт в excel и дальнейшее согласование / утверждение телефонной книги;
- реализую загрузку сведений из .csv с соответствующей корректировкой атрибута telephoneNumber и формированием журнала изменений;
- и создам сценарий powershell, который создаст локальные группы распространения (distribution group), членство в которых будет определяться как раз значением атрибута telephoneNumber .
Приступаем к первому этапу.
Выгружаем телефонную книгу в .csv
Выделил сценарий в отдельную статью, чтобы не загромождать эту статью.
Итак, телефонную книгу в .csv мы выгрузили для проверки и корректировки.
Загрузим в AD телефонную книгу из .csv
А теперь реализуем обратную операцию. Может пригодиться, когда Вам присылают откорректированный документ, полученный первоначально в предыдущем параграфе. Сценарий по импорту телефонной книги в статье “PowerShell: загружаем (импортируем) телефонную книгу в AD из .csv”.
Создаём группы распространения
Безусловно, сегодня можно обойтись для этой задачи и без статических групп с помощью Dynamic Distribution Groups, но Exchange 2003 такое удовольствие не поддерживает, поэтому всё-таки пишем скрипт для создания групп.
С созданием групп и OU проблем не возникло. Возникли некоторые сложности с автоматизацией удаления “лишних” членов в этих абонентских группах и добавления только тех, что ещё не являются членами. Кроме того, иной проверки наличия OU и групп, кроме как test-Path, не нашёл. Если Вы сможете предложить в комментарии иные варианты – буду крайне благодарен.
Более серьёзные проблемы возникли с тем, чтобы сделать созданные группы mail-enabled. Для этих целей Exchange 2010 предоставляет замечательную командлету enable-DistributionGroup, но Exchange 2003 её не предоставляет. С помощью enable-DistributionGroup код был бы следующим:
Но мы будем вынуждены придумывать некий “костыль” для Exchange 2003. Ранее, при доступе через ADSI можно было воспользоваться методом MailEnable. Приведу фрагмент кода JScript, который эксплуатируется по сей день:
Посему буду пробовать писать свой обрезанный enable-DistributionGroup, используя ADSI+CDOEXM. Решение выделил в отдельный модуль и отдельную статью. Возникла проблема с авторизацией, которой также посвятил отдельную статью, рекомендации статьи необходимо выполнить до попытки запуска кода.
Опубликую код, весь функционал уже проверен:
И этот код успешно работает. server-12 – это exchange server 2003 хост.
P.S. Этот код будет успешно работать и для Exchange Server 2007, но предварительно следует убрать наше импорт нашего собственного модуля .\ITG.Exchange\ITG.Exchange.psm1. Кстати, модуль описан здесь.
P.P.S. Вызов Enable-DistributionGroup в конвейере в моём случае обладает существенно более высокой производительностью по одной причине: все группы обрабатываются одной удалённой сессией. Если просто вызывать как функцию для каждой группы отдельно – потребуется дополнительное время на открытие и закрытие удалённое сессии для каждой группы.
Сценарий как командлета powershell
Как Вы уже, надеюсь, заметили, данный сценарий максимально приближен по функциональности к командлете. Он поддерживает параметры –whatIf , -verbose , -confirm . Должен сказать – самому понравилось, очень удобно при работе с AD (когда нужно проверить, что же сценарий сделает перед тем, как он это сделает). Необходимый для такой поддержки код выделен.
В Outlook 2007 автоматическая рассылка называлась списком рассылки (анг. mailing list). В Outlook 2010 механизм автоматической рассылки значительно упростился и стал называться как «Создание и изменение Групп контактов».
Теперь переходим непосредственно к созданию группы контактов. Открыв Outlook 2010, выбираем представление «Контакты» и жмем на «Главная». Выбираем пункт «Создать группу контактов» (рис.1)
В поле «Имя» вводим название группы, к которой будем применять автоматическую рассылку и выбираем пункт «Добавить участников».
Выбираем способ, с помощью которого будем добавлять участников Группы контактов: из контактов Outlook, из имеющейся адресной книги, путем создания нового контакта. В нашем примере это добавление контактов из Outlook.
В открывшемся окне выделяем контакт, который хотим добавить в Группу контактов и жмем на «Участники». После чего не забываем нажать на «Сохранить и закрыть» (рис.2).
чтобы получатели из группы рассылки не видели адреса других членов группы, используйте скрытую копию Outlook:
При переписке по электронной почте удобно ставить в копии всех людей, заинтересованных в ознакомление с перепиской, но не участвующих в ней. В таких случаях получатель письма увидит, что письмо пришло ему, а также увидит всех тех, кто стоит в копии письма.
Но что делать, когда вы не хотите дать понять контрагенту, что кто-то кроме него получает это письмо? В этом случае используйте поле «Скрытая копия». Создайте новое электронное письмо, перейдите на вкладку «Параметры» и выберите меню «Показать получателей скрытой копии» (Рис. 1).
Членство в динамической группе рассылки определяется на основании атрибутов пользователей в Active Directory. С одной стороны это удобно, поскольку дает возможность формировать группу по определенному признаку, например по принадлежности к департаменту или географическому расположению. Однако управлять членством в динамической группе гораздо сложнее, чем в статической. Добавить, удалить и даже просто посмотреть состав группы можно только с помощью PowerShell. Для примера создадим динамическую группу рассылки и затем отредактируем ее.
Указываем имя группы, выбираем ее расположение в Active Directory
и сохраняем группу.
Теперь откроем свойства группы, перейдем на вкладку membership и посмотрим, каким образом определяется членство в группе. Как видите, сейчас принадлежность к группе определяется только нахождением в определенном контейнере (OU). При необходимости можно добавить дополнительное правило фильтрации.
Однако в ECP возможности фильтрации сильно ограничены. Для выбора доступны всего несколько стандартных пользовательских атрибутов, а также для фильтрации можно использовать произвольные атрибуты (Custom Attributes).
Поскольку PowerShell предоставляет гораздо больше возможностей для фильтрации, то переходим в консоль. Для начала выведем список доступных фильтров командой:
Get-DynamicDistributionGroup "Test DDL" | fl name,*filter*,*container
Список членов группы определяется этими тремя параметрами:
Примечание. В Microsoft Exchange Server 2003 и более ранних версиях для создания групп рассылки использовался синтаксис фильтрации LDAP. Начиная с Exchange Server 2007 вместо синтаксиса фильтрации LDAP используется новый синтаксис фильтрации OPATH. Применение OPATH позволяет создавать фильтры непосредственно в командах командной консоли Exchange с помощью параметра -RecipientFilter.
Как видите, в нашу группу входят все объекты (пользователи, группы рассылки и т.п), находящиеся в OU DDL_Test и имеющие почтовый адрес, кроме служебных почтовых ящиков.
Выведем список членов группы командой:
Get-DynamicDistributionGroup "Test DDL" | ForEach
Создаем в AD группу ExcludeFromDDL. Группа может не иметь почтового адреса, но обязательно должна быть Universal и иметь тип Distribution.
Составляем вот такой фильтр:
((RecipientType -eq 'UserMailbox') -and (-not(MemberOfGroup -eq 'CN=ExcludeFromDDL,OU=DDL_Test,OU=Exchange,DC=ruchange,DC=ru')))
Т.е. только пользовательские ящики, не входящие в группу ExcludeFromDDL.
Применяем фильтр к группе:
Set-DynamicDistributionGroup -Identity "Test DDL" -RecipientFilter
Проверяем получившийся в результате фильтр:
(Get-DynamicDistributionGroup -Identity "Test DDL").RecipientFilter
Как видите, наши параметры добавились к уже имеющимся.
Проверяем список членов группы. Сейчас в него входят два почтовых ящика.
Добавляем ящик DDL_Test в группу ExcludeFromDDL
и еще раз проверяем. Теперь в группе остался только один ящик, DDL_Test из группы исключен. Что и требовалось доказать.
После того, как вы отредактируете фильтр из консоли PowerShell, изменять членство в группе из ECP станет невозможно. На вкладке Membership вы увидите вот такую картину.
В принципе для фильтрации можно взять и другие атрибуты. Полный список атрибутов пользователя, которые можно использовать для фильтрации, можно найти здесь.
Создайте списки контактов, которые позволят вам отправлять письма нескольким получателям одновременно
Создать группу контактов в Outlook
Списки рассылки называются группами контактов в Outlook. Выполните следующие действия, чтобы создать группу контактов, а затем добавить в нее участников в Outlook 2019, 2016, 2013 и Outlook для Office 365.
Перейдите в Главная и выберите Новые элементы > Дополнительные элементы > Группа контактов .
Получите быстрый доступ к группе контактов с помощью сочетания клавиш Ctrl + Shift + L .
В диалоговом окне Группа контактов поместите курсор в текстовое поле Имя и введите имя для группы контактов.
Перейдите на вкладку Группа контактов и выберите Добавить участников > Из контактов Outlook .
В диалоговом окне Выберите участников: контакты выберите контакт из списка, затем выберите Участники , чтобы добавить его в группу. При необходимости добавьте дополнительных участников в группу.
Нажмите ОК , чтобы вернуться в диалоговое окно Группа контактов .
Выберите Сохранить и закрыть .
Создать группу контактов в Outlook 2010
Создание группы контактов в Outlook 2010 аналогично более поздним версиям, но есть некоторые различия.
Нажмите Контакты .
Чтобы использовать сочетание клавиш для контактов, нажмите Ctrl + 3 .
В текстовом поле Имя введите имя для группы контактов.
Перейдите на вкладку Группа контактов и нажмите Добавить участников .
Выберите контакты, которые вы хотите добавить в группу.
Нажмите Участники , чтобы добавить выбранные контакты в группу.
Нажмите ОК , чтобы вернуться в диалоговое окно Группа контактов . Контакты, включенные в группу, перечислены.
Нажмите Сохранить и закрыть .
Нажмите стрелку раскрывающегося списка Новый контакт , затем выберите Новый список контактов .
Введите имя и описание для группы (только вы увидите эту информацию).
В текстовом поле Добавить адреса электронной почты введите имя или адрес электронной почты контакта, которого вы хотите добавить в список. Предложения генерируются из ваших контактов и отображаются в раскрывающемся списке.
Либо выберите предлагаемый контакт, чтобы добавить его в список, либо введите адрес электронной почты и выберите Добавить , если контакт не существует в вашей адресной книге.
Когда вы добавите всех в список, выберите Создать .
Чтобы изменить список контактов после его создания:
Откройте Средство запуска офисных приложений и выберите Люди .
Выберите Все списки контактов , выберите список контактов, которые вы хотите изменить, и выберите Изменить .
Отредактируйте список контактов, добавив или удалив контакты, изменив описание или изменив название списка.
После внесения всех изменений выберите Сохранить .
Чтобы удалить список контактов:
Удаление списка контактов не удаляет отдельные контакты в списке.
Откройте Средство запуска офисных приложений и выберите Люди .
Выберите Все списки контактов , затем выберите список, который вы хотите удалить.
Читайте также: