Создать группу рассылки в outlook powershell

Обновлено: 04.07.2024

Я думаю, Вы не однократно сталкивались с необходимостью сообщить Вашему контрагенту по телефону Ваш адрес электронной почты. Диктовать вместе “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 .

В текстовом поле Имя введите имя для группы контактов.

Перейдите на вкладку Группа контактов и нажмите Добавить участников .

Выберите контакты, которые вы хотите добавить в группу.

Нажмите Участники , чтобы добавить выбранные контакты в группу.

Нажмите ОК , чтобы вернуться в диалоговое окно Группа контактов . Контакты, включенные в группу, перечислены.

Нажмите Сохранить и закрыть .

Нажмите стрелку раскрывающегося списка Новый контакт , затем выберите Новый список контактов .

Введите имя и описание для группы (только вы увидите эту информацию).

В текстовом поле Добавить адреса электронной почты введите имя или адрес электронной почты контакта, которого вы хотите добавить в список. Предложения генерируются из ваших контактов и отображаются в раскрывающемся списке.

Либо выберите предлагаемый контакт, чтобы добавить его в список, либо введите адрес электронной почты и выберите Добавить , если контакт не существует в вашей адресной книге.

Когда вы добавите всех в список, выберите Создать .

Чтобы изменить список контактов после его создания:

Откройте Средство запуска офисных приложений и выберите Люди .

Выберите Все списки контактов , выберите список контактов, которые вы хотите изменить, и выберите Изменить .

Отредактируйте список контактов, добавив или удалив контакты, изменив описание или изменив название списка.

После внесения всех изменений выберите Сохранить .

Чтобы удалить список контактов:

Удаление списка контактов не удаляет отдельные контакты в списке.

Откройте Средство запуска офисных приложений и выберите Люди .

Выберите Все списки контактов , затем выберите список, который вы хотите удалить.

Читайте также: