Cambie la dirección de alias a la dirección SMTP principal con PowerShell
Ya tiene la dirección SMTP principal y la dirección de alias para cada conjunto de buzones. Sin embargo, la tarea consiste en intercambiar la dirección de alias con la dirección SMTP principal. La mejor manera de hacerlo es con PowerShell. En este artículo, aprenderá cómo cambiar la dirección de alias a la dirección SMTP principal en Exchange Server con PowerShell.
Introducción
El script de PowerShell Set-PrimaryAddress.ps1 funciona para:
- Intercambio local
- Intercambio híbrido
Si desea hacer lo mismo para un entorno Exchange Online (Microsoft 365), lea el artículo Cambiar la dirección de alias de Microsoft 365 a la dirección SMTP principal con PowerShell.
Nota: La dirección SMTP de alias se convierte en la dirección SMTP principal, y la dirección SMTP principal se convertirá en una dirección de alias. Por lo tanto, la dirección SMTP principal no se eliminará; simplemente se intercambia con la dirección SMTP del alias.
Antes de empezar
¿Qué pasa si no hay ninguna dirección de alias configurada para cada buzón? Lo mejor es leer el artículo Agregar de forma masiva una dirección SMTP secundaria con PowerShell.
Una vez que haya verificado que la dirección de alias está configurada para todos los buzones de correo, ejecute el script de PowerShell Set-PrimaryAddress.ps1 de este artículo para intercambiar la dirección de alias con la dirección SMTP principal.
Supongamos que ya terminó y desea eliminar la antigua dirección SMTP principal que ahora es una dirección alias, puede consultar el artículo Eliminación masiva de direcciones SMTP secundarias con PowerShell.
Siempre es mejor hacer esto por etapas que con un script que lo hace todo de inmediato para estar seguro de que todo está configurado correctamente.
Preparar el script de PowerShell de la dirección SMTP principal establecida
Descargue el script de PowerShell Set-PrimaryAddress.ps1 o copie y pegue el código siguiente en el Bloc de notas. Asígnele el nombre Set-PrimaryAddress.ps1 y colóquelo en la carpeta C:\scripts. Cree una carpeta Scripts si no tiene una.
<#
.SYNOPSIS
Set-PrimaryAddress.ps1
.DESCRIPTION
Get the secondary (alias) address from a specified domain and set it as the primary SMTP address
for all mailbox users in Exchange Server and Exchange Hybrid. If there is no alias address
set with the specified domain, it will skip the user and display a message. The primary SMTP address
will become an alias address and all the secondary email address will remain.
.LINK
www.alitajran.com/change-alias-address-to-primary-smtp-address/
.NOTES
Written by: ALI TAJRAN
Website: alitajran.com
X: x.com/alitajran
LinkedIn: linkedin.com/in/alitajran
.CHANGELOG
V1.00, 06/04/2024 - Initial version
V1.10, 09/03/2024 - Added parameters
#>
param (
[Parameter(Mandatory = $true)]
[string]$DomainName,
[switch]$WhatIf,
[switch]$Remote
)
# Output will be added to C:\temp folder. Open the log with a text editor.
Start-Transcript -Path C:\temp\Set-Primary-SMTP-Address.log -Append
# Ensure the domain starts with '@'
$PrimarySMTPDomain = "@" + $DomainName
# Choose the appropriate cmdlets based on the switch
if ($Remote) {
$GetMailboxCmdlet = "Get-RemoteMailbox"
$SetMailboxCmdlet = "Set-RemoteMailbox"
}
else {
$GetMailboxCmdlet = "Get-Mailbox"
$SetMailboxCmdlet = "Set-Mailbox"
}
# Get all mailbox users
$users = Invoke-Expression "$GetMailboxCmdlet -ResultSize Unlimited"
foreach ($user in $users) {
$currentPrimarySMTP = $user.PrimarySmtpAddress.ToString()
$aliasAddresses = $user.EmailAddresses | Where-Object { $_ -clike "smtp*" -and $_ -clike "*$PrimarySMTPDomain" }
# Check if the current primary SMTP address ends with the specified domain
if ($currentPrimarySMTP -like "*$PrimarySMTPDomain") {
Write-Host "Skipping $($user.DisplayName) - Primary SMTP already ends with $PrimarySMTPDomain" -ForegroundColor Yellow
}
elseif ($aliasAddresses.Count -eq 1) {
$newPrimarySMTP = $aliasAddresses -replace "smtp:", ""
Write-Host "Updating primary SMTP for $($user.DisplayName) to $newPrimarySMTP" -ForegroundColor Green
# Set the new primary SMTP address
if ($WhatIf) {
Invoke-Expression "$SetMailboxCmdlet -Identity '$($user.Identity)' -PrimarySmtpAddress '$newPrimarySMTP' -EmailAddressPolicyEnabled `$false -WhatIf"
}
else {
Invoke-Expression "$SetMailboxCmdlet -Identity '$($user.Identity)' -PrimarySmtpAddress '$newPrimarySMTP' -EmailAddressPolicyEnabled `$false"
}
}
elseif ($aliasAddresses.Count -eq 0) {
Write-Host "No alias address found for $($user.DisplayName) - Primary SMTP not updated" -ForegroundColor Cyan
}
else {
Write-Host "Multiple alias addresses found for $($user.DisplayName) - Primary SMTP not updated" -ForegroundColor Red
}
}
Stop-TranscriptConfiguración masiva de la dirección SMTP principal Script de PowerShell
El script funciona para entornos Exchange locales y Exchange Hybrid. Es esencial que ejecute Exchange Management Shell como administrador.
Vaya a la ruta del script y ejecute el script Set-PrimaryAddress.ps1. El script revisará todos los buzones de correo de la organización Exchange.
C:\scripts\.\Set-PrimaryAddress.ps1 -DomainName "exoip.nl" -WhatIfSupongamos que desea dirigirse a los buzones de correo en la nube en un entorno híbrido de Exchange, debe agregar el parámetro -Remote. Esto cambiará de Get-Mailbox a Get-RemoteMailbox para recuperar todos los buzones de correo en la nube, y Set-Mailbox se cambiará a Set-RemoteMailbox para aplicar los cambios a los buzones de correo en la nube.
C:\scripts\.\Set-PrimaryAddress.ps1 -DomainName "exoip.nl" -Remote -WhatIfNota: Hay un parámetro -WhatIf para una ejecución en seco, de modo que no suceda nada y puede volver a verificar la salida de PowerShell si todo se ve como lo desea. Una vez que todo se vea bien, elimine el parámetro -WhatIf y vuelva a ejecutar el script.
C:\scripts\.\Set-PrimaryAddress.ps1 -DomainName "exoip.nl"Si existen varias direcciones de alias para un buzón, no se aplicará ningún cambio y el resultado mostrará esa información para que pueda consultarla.
En este ejemplo, la dirección de alias existente con el dominio @exoip.nl se establecerá de forma masiva como la dirección SMTP principal.
Transcript started, output file is C:\temp\Set-Primary-SMTP-Address.log
Multiple alias addresses found for Alysia Maverick - Primary SMTP not updated
No alias address found for Boris Campbell - Primary SMTP not updated
Updating primary SMTP for Christopher Payne to Christopher.Payne@exoip.nl
No alias address found for Discovery Search Mailbox - Primary SMTP not updated
Updating primary SMTP for James Paterson to James.Paterson@exoip.nl
No alias address found for Fraser, Max - Primary SMTP not updated
Updating primary SMTP for Nicholas Murray to Nicholas.Murray@exoip.nl
No alias address found for Richard Hunter - Primary SMTP not updated
No alias address found for sharedmailboxonprem - Primary SMTP not updated
Transcript stopped, output file is C:\temp\Set-Primary-SMTP-Address.logLa dirección de alias SMTP existente ahora es la dirección SMTP principal para todos los usuarios.
Leer más: Enviar desde Alias en Office 365 »
Conclusión
Aprendió a configurar de forma masiva una dirección de alias como dirección SMTP principal con PowerShell. Primero, descargue el script de PowerShell Set-PrimaryAddress. Luego, agregue el dominio en el comando que desea que busque en las direcciones de alias del buzón. Por último, ejecute el script. Recuerde probar primero con el parámetro -WhatIf.
¿Disfrutaste este artículo? También te puede interesar Crear buzón compartido con el mismo alias. No olvides seguirnos y compartir este artículo.