使用 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 地址交换。
更多阅读:如何使用 PowerShell 强制删除 Microsoft 365 中的联系人
假设您已完成并想要删除现在是别名地址的旧主 SMTP 地址,您可以阅读使用 PowerShell 批量删除辅助 SMTP 地址一文。
分阶段执行此操作总是比使用一个脚本立即完成所有操作要好,这样您就可以确保所有设置都正确无误。
下载 Set-M365PrimaryAddress.ps1 PowerShell 脚本或将以下代码复制并粘贴到记事本中。给它起个名字设置-M365PrimaryAddress.ps1并将其放置在C:脚本文件夹。创建一个脚本文件夹(如果没有)。
<#
.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.alitajran.com/change-microsoft-365-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, 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:tempSet-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 组织中的所有邮箱。
笔记:有一个-如果什么参数进行空运行,这样就不会发生任何事情,并且如果一切看起来都符合您的要求,您可以仔细检查 PowerShell 输出。一旦一切看起来都不错,删除-如果什么参数并重新运行脚本。
C:scripts.Set-M365PrimaryAddress.ps1 -DomainName "exoip.nl" -WhatIf
运行脚本而不使用-如果什么范围。
C:scripts.Set-M365PrimaryAddress.ps1 -DomainName "exoip.nl"
如果邮箱存在多个别名地址,它将不会应用任何更改,并且输出将显示该信息,以便您可以查看它。
在此示例中,域为 @exoip.nl 的现有别名地址将被批量设置为主 SMTP 地址。
Transcript started, output file is C:tempSet-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:tempSet-M365Primary-SMTP-Address.log
就是这样!
结论
您了解了如何使用 PowerShell 在 Microsoft 365 中批量设置别名地址作为主 SMTP 地址。首先,下载 Set-M365PrimaryAddress PowerShell 脚本。然后,在命令中添加您希望其在邮箱别名地址中搜索的域。最后,运行脚本。请记住首先使用 -WhatIf 参数进行测试。
您喜欢这篇文章吗?您可能还喜欢从 Microsoft Outlook 移动应用程序(iOS 和 Android)作为别名发送。不要忘记关注我们并分享这篇文章。
