Мне поручено создать сценарий, который опрашивает AD для получения конкретной информации, а затем создает соответствующий адрес электронной почты на основе этой информации. Пожалуйста, позвольте мне дать вам небольшое изложение.
У моей компании 5 почтовых доменов. Все 5 разрешены через Exchange, но сейчас мы используем только один. В настоящее время все настроены с адресом электронной почты company.com по умолчанию. У нас есть несколько разных брендов, по которым мы хотели бы сегментировать наших пользователей, чтобы повысить доставляемость электронной почты, чтобы наша корпоративная электронная почта не зависела от репутации IP, когда маркетинг решает выпускать массовые электронные письма.
Я управляю 7 сервером Exchange 2010 DAG (3 рабочих, 3 DR, 1 3-дневное отставание). Я неплохо разбираюсь в PowerShell и довольно хорошо умею находить нужные мне фрагменты кода, поэтому я не ищу весь сценарий, но у меня проблемы с некоторыми частями.
Бизнес хочет создать сценарий, который считывает атрибут в AD, а затем на основе этого атрибута присваивает его правильному бренду. Так, например. Если пользователь AD имеет атрибут «Маркетинг», он получит адрес электронной почты marketing.com в качестве основного адреса для ответа, сохраняя при этом свой адрес электронной почты company.com в качестве дополнительного. Если пользователь AD имеет атрибут «строительные продукты», то building.com будет его адресом электронной почты для ответа и т. Д.
Я могу заставить PowerShell опросить AD на предмет атрибута. Я могу заставить его создать электронную почту. У меня проблемы с выяснением, как заставить его выбрать одно из других доменных имен, а не адрес электронной почты по умолчанию company.com.
Приветствуется любое понимание.
Это не проверено, но должно направить вас в правильном направлении.
$peeps = get-aduser -filter * -properties department
for-each ($person in $peeps){
##Checks Department and sets new email
if ($person.department -eq "building"){$email = $person.firstname+'.'+$person.surname +'@buildings.com'}
elseif ($person.department -eq "otheroption"){$email = $person.firstname+'.'+$person.surname +'@whatever.com'}
##Changes existing email addresses to aliases and sets new email from above as primary
$person.user = $user
$smtp=get-aduser $user.samaccountname -properties proxyaddresses |select-object proxyaddresses
$newsmtp = @()
foreach($addr in $smtp.proxyaddresses){
if ($addr -notmatch $email -and $addr -cmatch "SMTP"){
$newsmtp = $newsmtp + $addr.replace("SMTP","smtp")
}
elseif ($addr -notmatch $email -and $addr -cnotmatch "SMTP"){$newsmtp = $newsmtp + $addr}
}
$emailproxy = 'SMTP:'+$email
$newsmtp = $newsmtp + $emailproxy
set-aduser $user.samaccountname -replace @{proxyaddresses=@($newsmtp)}
}