Tive o mesmo problema (um pouco atrasado), então peguei seu "script" e o atualizei. Você precisa desativar a diretiva de endereço de email a ser aplicada aos contatos no Exchange e isso resolverá parcialmente o problema.
1) Expandir o Microsoft Exchange no local
2) Expanda Configuração da Organização
3) Selecione Transporte de Hub e vá para a guia Políticas de Endereço de Email
4) Edite cada um deixando Users with external e-mail addresses
sem caixa de seleção e Contacts with external e-mail addresses
.
Issoresolveráparcialmenteoproblemaporqueapolíticapadrãonãopodeserdesativada,porissoacabeitendoendereçosdeemaildomain.localadicionadosanovoscontatosdequalquermaneira.
Entãoeuescreviumscriptbaseadonaquelefornecidoemquestão(oqueestavaemquestãotinhaalgunsbugsondeváriosendereçosdomesmodomínioforamatribuídoseestavafazendomuitobarulho)queremoveriamquaisquerendereçosdee-mailquenãofossemexternosetambémgarantiráqueoscontatosantigosnãorecebampolíticasreaplicadas.
#####Inputvariables####$domains=@("*@domain.com","*@domain.pl","*@evotec.pl", "*@domain.local")
$ou = "evotec.local"
####
# Removing internal domains from contacts
####
$domains | foreach {
$domain = $_;
write-host "Preparing for removal of addresses with domain name:" $domain
$Contacts = Get-MailContact -OrganizationalUnit $ou -Filter {
EmailAddresses -like $domain -and name -notlike "ExchangeUM*"
} -ResultSize unlimited -IgnoreDefaultScope
$Contacts | foreach {
$contact = $_;
$email = $contact.emailaddresses;
#write-host "1. " $contact
#write-host "2. " $contact.name
#write-host "3. " $email
#write-host "4. " $contact.identity
$email | foreach {
if ($_.smtpaddress -like $domain)
{
$address = $_.smtpaddress;
write-host "[*] Removing address" $address "from Contact" $contact.name;
Set-Mailcontact -Identity $contact.identity -EmailAddresses @{Remove=$address};
}
}
}
}
####
# Setting up email address policy to disabled for all contacts
####
write-host "Preparing all contacts for disabling email address policy"
$Contacts = Get-MailContact -OrganizationalUnit $ou -Filter {
EmailAddresses -like $domain -and name -notlike "ExchangeUM*"
} -ResultSize unlimited -IgnoreDefaultScope | Where {$_.EmailAddressPolicyEnabled -eq $true}
$Contacts | foreach {
$contact = $_;
write-host "[*] Setting up email address policy to disabled for" $contact.name
$contact | set-mailcontact -emailaddresspolicyenabled $false
}
A etapa final é configurá-lo como Agendador de Tarefas, pois os novos contatos continuarão recebendo a política padrão não editável (pelo menos no modo compatível). Essa configuração no servidor do Exchange será executada bem. Certifique-se de executá-lo com as permissões corretas.
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command ". 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; C:\ExchangeScript\RemoveLGBSEmailsFromContacts.ps1"