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):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$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:
1 2 3 4 5 6 7 8 9 10 11 |
$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"} } } |