我的任务是创建一个脚本,该脚本会轮询 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 电子邮件地址。
任何见解都将不胜感激。
答案1
这尚未经过测试,但应该可以为您指明正确的方向。
$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)}
}