Búsqueda de sitios web

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-Transcript

Configuració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" -WhatIf

Supongamos 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 -WhatIf

Nota: 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.log

La 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.

Artículos relacionados