Añadir un dominio de correo secundario a todos los usuarios con PowerShell

En numerosas ocasiones podemos encontrarnos con la necesidad de añadir un nuevo dominio para las cuentas de correo de nuestros usuarios, y dependiendo del número de usuarios puede convertirse en una tarea muy engorrosa. Como todos los scripts de PowerShell, la tarea se vuelve súmamente fácil, rápida y automatizada, de modo que nos podemos despreocupar del número de usuarios.

Por lo tanto, si nuestros usuarios están utilizando la dirección de correo electrónico usuario@contoso.com y queremos añadir usuario@contoso.es, podemos utilizar este script para hacerlo de manera automatizada. Obviamente, es importante tener en cuenta que el dominio que queramos añadir debe estar añadido y verificado en nuestro tenant de Office 365.

Versión DirSync (modificación de Active Directory mediante ADSI):

$activeDomain = New-Object DirectoryServices.DirectoryEntry
$domain = $activeDomain.distinguishedName
$searcher = [System.DirectoryServices.DirectorySearcher]"[adsi]LDAP://$domain"
$searcher.filter = '(proxyaddresses=*@contoso.com*)'
$result = $searcher.findall()
$users = $result.Path
 
$users | ForEach-Object {
    $user = [adsi]"$_"
    $proxyaddresses = $user.proxyaddresses.Value | Where-Object { $_ -like 'smtp:*@contoso.com' }
    foreach ($proxyaddress in $proxyaddresses) {
        $newaddress = ($proxyaddress.split ':')[1] -replace '@contoso.com', '@contoso.es'
        $user.proxyaddresses.add("smtp:$newaddress")
    }
    $user.setinfo()
}

 

Versión cloud:

$cred = Get-Credential -Message 'Por favor, introduce tus credenciales de administrador de Office 365'
$O365 = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri 'https://outlook.office365.com/powershell-liveid/' -Credential $cred -Authentication Basic -AllowRedirection
$importcmd = Import-PSSession $O365 -CommandName @('Get-Mailbox','Set-Mailbox') -AllowClobber
 
Get-Mailbox -ResultSize Unlimited -Filter { EmailAddresses -like '*@contoso.com' } | Select-Object Identity,EmailAddresses | ForEach-Object {
    $proxyaddresses = $_.EmailAddresses | Where-Object { $_ -like 'smtp:*@contoso.com' }
    foreach ($proxyaddress in $proxyaddresses) {
        $newaddress = ($proxyaddress -split ':')[1] -replace '@contoso.com','@contoso.es'
        Set-Mailbox -Identity $_.Identity -EmailAddresses @{Add="smtp:$newaddress"}    
    }
}

 

También te podría gustar...