http://www.sourica.ru/page/poluchenie-aliasov-elektronnoj-pochty-po-zadannym-kriterijam
Продолжаем писать полезные и не очень скрипты для получения данных с AD. Сейчас задача следующая.
- Есть домен child1.example.com c почтовыми адресами на Exchange вида: @child1.com
- Есть домен child2.example.com c почтовыми адресами на Exchange вида: @child2.com
- У некоторых пользователей домена child2.example.com в качестве дополнительного адреса электронной почты присутствуют адреса @child1.com
- Для определенных целей необходимо получить данные адреса.
Приступим к реализации. Как и раньше будем использовать ActiveRoles Management Shell от Quest Software. Для начала разберемся в терминах:
- Primarysmtpaddress – адрес, используемый по умолчанию для отправки сообщений через Exchange. Он может быть только один.
- ProxyAddresses – дополнительные адреса электронной почты, которых может быть МНОГО.
Наша задача получить список ProxyAddresses адресов @child1.com у пользователей домена child2.
Для этого используем такую конструкцию:
Gt-QADUser -SearchRoot 'dc=child2,dc=example,dc=com' -SizeLimit 0 -IncludedProperties ProxyAddresses | where {$_.ProxyAddresses -match 'child1.com'} | Select-Object @{n='CHILD1';e={$_.ProxyAddresses -match 'child1.com'}}
Разберем немного подробнее:
Get-QADUser -SearchRoot ‘dc=child2,dc=example,dc=com’ -SizeLimit 0 -IncludedProperties ProxyAddresses
- Get-QADUser – получаем список пользователей
- -SearchRoot ‘dc=child2,dc=example,dc=com’ — указываем нужный нам домен в качестве корня поиска пользователей
- -SizeLimit 0 — ЕМПНИМ ограничение вывода 1000 пользователей. Убираем данный лимит если у нас очень много пользователей.
- -IncludedProperties ProxyAddresses — по умолчанию в результирующий набор получаемых данных включаются не все доступные атрибуты пользователя. В частности ProxyAddresses необходимо включать явным образом.
where {$_.ProxyAddresses -match 'child1.com'}
Получает в конвейере список пользователей. Фильтрует из них только тех, у кого в ProxyAddresses присутствует нужный почтовый домен.
Select-Object @{n='CHILD1';e={$_.ProxyAddresses -match 'child1.com'}}
Также в конвейере получает отфильтрованный список пользователей и выводит только нужное по условиям задачи поле.
На выходе получаем список адресов электронной почты, который нас и интересует.