当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 将 Microsoft 365 别名地址更改为主 SMTP 地址

作者:精品下载站 日期:2024-12-14 03:38:36 浏览:14 分类:玩电脑

使用 PowerShell 将 Microsoft 365 别名地址更改为主 SMTP 地址


该组织将使用新的主 SMTP 地址。他们已经将该新地址设置为所有邮箱的别名地址。现在,他们想将其与主 SMTP 地址交换。如果还有其他别名地址,则需要保持不变。在本文中,您将了解如何使用 PowerShell 将 Microsoft 365 中的别名地址更改为主 SMTP 地址。

介绍

Set-M365PrimaryAddress.ps1 PowerShell 脚本适用于 Exchange Online (Microsoft 365)。如果您想对 Exchange 本地或 Exchange 混合环境执行相同的操作,请阅读文章使用 PowerShell 将别名地址更改为主 SMTP 地址。

注意: 别名 smtp 地址将成为主 SMTP 地址,主 SMTP 地址将成为别名地址。因此,主 SMTP 地址不会被删除;它只是与别名 smtp 地址进行交换。

开始之前

如果没有为每个邮箱设置别名地址怎么办?最好是阅读使用 PowerShell 批量添加辅助 SMTP 地址一文。

验证是否为所有邮箱设置了别名地址后,运行本文中的 Set-M365PrimaryAddress.ps1 PowerShell 脚本,将别名地址与主 SMTP 地址交换。

假设您已完成并想要删除现在是别名地址的旧主 SMTP 地址,您可以阅读使用 PowerShell 批量删除辅助 SMTP 地址一文。

分阶段执行此操作总是比使用一个脚本立即执行所有操作要好,这样您就可以确保所有设置都正确无误。

准备设置 Microsoft 365 主 SMTP 地址 PowerShell 脚本

下载 Set-M365PrimaryAddress.ps1 PowerShell 脚本或将以下代码复制并粘贴到记事本中。将其命名为 Set-M365PrimaryAddress.ps1 并将其放置在 C:\scripts 文件夹中。如果没有 Scripts 文件夹,请创建一个。

<#
    .SYNOPSIS
    Set-M365PrimaryAddress.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 Online (Microsoft 365). 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.a-d.site/change-microsoft-365-alias-address-to-primary-smtp-address/

    .NOTES
    Written by: ALI TAJRAN
    Website:    a-d.site
    X:          x.com/a-d
    LinkedIn:   linkedin.com/in/a-d

    .CHANGELOG
    V1.00, 09/01/2024 - Initial version
#>

param (
    [Parameter(Mandatory = $true)]
    [string]$DomainName,
    [switch]$WhatIf
)

# Output will be added to C:\temp folder. Open the log with a text editor.
Start-Transcript -Path C:\temp\Set-M365Primary-SMTP-Address.log -Append

# Specify the domain to set as primary SMTP
$primarySMTPDomain = "@" + $DomainName

# Get all mailbox users
$users = Get-Mailbox -ResultSize Unlimited

foreach ($user in $users) {
    $currentPrimarySMTP = $user.PrimarySmtpAddress.ToString()
    $allEmailAddresses = $user.EmailAddresses
    $aliasAddresses = $allEmailAddresses | Where-Object { $_ -clike "smtp:*$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:", "SMTP:"
        Write-Host "Updating primary SMTP for $($user.DisplayName) to $newPrimarySMTP" -ForegroundColor Green

        # Combine new primary with other addresses (keeping all existing addresses)
        $updatedAddresses = @($newPrimarySMTP) + ($allEmailAddresses -replace "SMTP:", "smtp:" | Where-Object { $_ -ne $newPrimarySMTP })

        # Set the new primary SMTP address
        if ($WhatIf) {
            Set-Mailbox -Identity $user -EmailAddresses $updatedAddresses -WhatIf
        }
        else {
            Set-Mailbox -Identity $user -EmailAddresses $updatedAddresses
        }
    }
    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

批量设置 Microsoft 365 主 SMTP 地址 PowerShell 脚本

该脚本适用于 Microsoft 365 环境中的 Exchange Online。以管理员身份运行 PowerShell 并连接到 Exchange Online PowerShell。

Connect-ExchangeOnline

转到脚本路径并运行 Set-M365PrimaryAddress.ps1 脚本。该脚本将遍历 Exchange Online 组织中的所有邮箱。

注意: 有一个用于试运行的 -WhatIf 参数,这样就不会发生任何事情,如果一切都符合您的要求,您可以仔细检查 PowerShell 输出。一旦一切看起来都不错,请删除 -WhatIf 参数并重新运行脚本。

C:\scripts\.\Set-M365PrimaryAddress.ps1 -DomainName "exoip.nl" -WhatIf

运行不带 -WhatIf 参数的脚本。

C:\scripts\.\Set-M365PrimaryAddress.ps1 -DomainName "exoip.nl"

如果邮箱存在多个别名地址,它将不会应用任何更改,并且输出将显示该信息,以便您可以查看它。

在此示例中,域为 @exoip.nl 的现有别名地址将被批量设置为主 SMTP 地址。

Transcript started, output file is C:\temp\Set-M365Primary-SMTP-Address.log
Multiple alias addresses found for Adam Clark - Primary SMTP not updated
No alias address found for ALI TAJRAN - Primary SMTP not updated
Updating primary SMTP for Alison Bell to SMTP:[email protected]
No alias address found for Grace Rees - Primary SMTP not updated
Skipping Jeff Baker - Primary SMTP already ends with @tajran.com
No alias address found for John Maverick - Primary SMTP not updated
No alias address found for Joshua Hunter - Primary SMTP not updated
Updating primary SMTP for Zoë Roberts to SMTP:[email protected]
Transcript stopped, output file is C:\temp\Set-M365Primary-SMTP-Address.log

就是这样!

了解更多:使用 PowerShell 查找电子邮件地址 »

结论

您了解了如何使用 PowerShell 在 Microsoft 365 中批量设置别名地址作为主 SMTP 地址。首先,下载 Set-M365PrimaryAddress PowerShell 脚本。然后,在命令中添加您希望其在邮箱别名地址中搜索的域。最后,运行脚本。请记住首先使用 -WhatIf 参数进行测试。

您喜欢这篇文章吗?您可能还喜欢从 Microsoft Outlook 移动应用程序(iOS 和 Android)作为别名发送。不要忘记关注我们并分享这篇文章。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯