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

[玩转系统] 如何使用 PowerShell 添加电子邮件地址

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

如何使用 PowerShell 添加电子邮件地址


您可以将其他电子邮件添加到组织中的单个邮箱或所有邮箱,并保留现有电子邮件地址。还可以添加一个电子邮件地址来替换现有的电子邮件地址。在本文中,您将了解如何使用 PowerShell 添加电子邮件地址。

管理 Exchange Online 中的电子邮件地址

要管理 Microsoft 365 组织中的电子邮件地址,请使用以下文章:

  • 使用 PowerShell 添加电子邮件地址(本文)
  • 使用 PowerShell 删除电子邮件地址
  • 使用 PowerShell 导出电子邮件地址

主要和辅助电子邮件地址

每个收件人可以有多个电子邮件地址,但应始终有一个主 SMTP 地址,这是默认设置。所有其他电子邮件地址都是可选的,例如:

  • smtp:辅助电子邮件地址(别名)
  • 代理:其他电子邮件地址
  • SIP:其他电子邮件地址
  • x500:其他电子邮件地址

连接到 Exchange Online PowerShell

若要运行当前文章中指定的 PowerShell 命令,您必须连接到 Exchange Online PowerShell。

Connect-ExchangeOnline

将主 SMTP 电子邮件地址添加到单个邮箱

要添加或替换现有电子邮件地址,我们将使用 Set-Mailbox PowerShell cmdlet。我们将向您展示使用 PowerShell 将主电子邮件地址添加到单个邮箱的不同方法。您还可以在 Microsoft 365 管理中心和 PowerShell 中更改 Microsoft 365 主 SMTP 地址。

方法 1. 添加主 SMTP 地址并删除其他电子邮件地址

我们将在 PowerShell 命令中使用 -EmailAddresses 参数来替换主 SMTP 电子邮件地址。

运行以下 PowerShell 命令将主 SMTP 电子邮件地址添加到用户邮箱并删除其他现有电子邮件地址。

Set-Mailbox "[email protected]" -EmailAddresses "SMTP:[email protected]"

结果如下:

  • 新电子邮件地址([email protected])将取代当前的电子邮件地址。
  • 旧的 SMTP 主电子邮件地址现在保存为辅助 smtp 电子邮件地址。
  • 所有其他附加电子邮件地址(例如别名、代理、.onmicrosoft.com 和 SIP 地址)均已删除。
  • UserPrincipalName 将保持不变([email protected])

运行 PowerShell 命令后,您将收到以下警告,您可以忽略该警告。

警告:代理地址“[email protected]”用作 WindowsLiveId。因此无法将其从电子邮件地址列表中删除。要删除它,请首先更改 WindowsLiveId。

运行以下 PowerShell 命令来检查结果。

Get-Mailbox "[email protected]" | Format-List Alias, PrimarySmtpAddress, EmailAddresses

Powershell 结果显示了这些结果。

Alias              : Brenda.Smith
PrimarySmtpAddress : [email protected]
EmailAddresses     : {smtp:[email protected],
                     SMTP:[email protected]}

方法 2. 添加主 SMTP 地址并保留所有现有电子邮件地址

我们将添加一个主电子邮件地址来替换旧的电子邮件地址。要替换主 SMTP 地址,请使用 -WindowsEmailAddress 参数。

运行以下 PowerShell 命令来替换主 SMTP 地址,而不删除所有其他电子邮件地址。

Set-Mailbox "[email protected]" -WindowsEmailAddress "[email protected]"

结果如下:

  • 新电子邮件地址([email protected])将取代当前的电子邮件地址。
  • 旧的 SMTP 主电子邮件地址现在保存为辅助 smtp 电子邮件地址。
  • 所有其他附加电子邮件地址(例如别名、代理、.onmicrosoft.com 和 SIP 地址)均保持不变。

将辅助 smtp 电子邮件地址添加到单个邮箱

添加辅助电子邮件地址有多种方法。在 PowerShell 命令中使用 @{add 添加其他电子邮件地址。

邮箱的主 SMTP 和所有其他现有电子邮件地址将保持不变。

方法一

运行以下 PowerShell 命令将一个 smtp 电子邮件地址添加到单个邮箱。

Set-Mailbox "[email protected]" -EmailAddresses @{add = "[email protected]" }

方法2

运行下面的 PowerShell 命令将多个 smtp 电子邮件地址添加到单个邮箱。

Set-Mailbox "[email protected]" -EmailAddresses @{add = "[email protected]", "[email protected]" }

方法3

您可以将 add 替换为 (+) 符号,但将其括在双引号中,如下面的 PowerShell 命令所示。

Set-Mailbox "[email protected]" -EmailAddresses @{"+" = "[email protected]" }

将主要和辅助电子邮件地址添加到单个邮箱

您可以为用户添加新的主 SMTP 地址和辅助 SMTP 地址,但这将删除所有现有的电子邮件地址。

方法 1. 添加辅助电子邮件地址并删除现有电子邮件地址

当您添加新的 SIP 地址时,它将删除单个邮箱的所有现有电子邮件地址,但保留主 SMTP 地址。

运行 PowerShell 命令将 SIP 电子邮件地址添加到单个邮箱。

Set-Mailbox "[email protected]" -EmailAddresses "SIP:[email protected]"

结果如下:

  • 它添加了新的 SIP 电子邮件地址([email protected])
  • 所有其他附加电子邮件地址(例如别名、代理、.onmicrosoft.com 和 SIP 地址)均已删除
  • 主 SMTP 电子邮件地址将保持不变。

运行 PowerShell 命令后,您将收到以下警告,您可以忽略该警告。

警告:代理地址“[email protected]”用作 WindowsLiveId。因此无法将其从电子邮件地址列表中删除。要删除它,请首先更改 WindowsLiveId。

方法 2. 添加主 SMTP 地址和辅助电子邮件地址并删除现有电子邮件地址

您可以替换主电子邮件地址并添加新的别名地址,这将删除所有现有电子邮件地址。当您更改主地址时,旧的 SMTP 地址不会被删除,而是保留为辅助 SMTP 地址。

在我们的示例中,我们要添加这些新的电子邮件地址:

PowerShell 命令Set-Mailbox 会将第一个电子邮件地址添加为主电子邮件地址,将其他电子邮件地址添加为辅助(别名)电子邮件地址(如果您没有指定任何地址)。

注意:要添加和替换主 SMTP 地址,最好在 PowerShell 命令中添加 SMTP 后缀。

运行以下 PowerShell 命令以添加两个电子邮件地址。

Set-Mailbox "[email protected]" -EmailAddresses "SMTP:[email protected]", "[email protected]", "[email protected]"

结果如下:

  • 第一个电子邮件地址([email protected]) 替换当前的电子邮件地址。
  • 它将添加第二个和第三个电子邮件地址[email protected][email protected]作为辅助 (smtp) 地址。
  • 旧的主要地址更改为辅助 smtp 地址。
  • 所有其他附加电子邮件地址(例如别名、代理、.onmicrosoft.com 和 SIP 地址)均已删除(删除)。
  • 运行命令后,您将收到以下警告。

警告:代理地址“[email protected]”用作 WindowsLiveId。因此无法将其从电子邮件地址列表中删除。要删除它,请首先更改 WindowsLiveId。

为所有邮箱添加带有新域名后缀的辅助 smtp 地址

我们将使用 PowerShell 中的 ForEach 语句为所有邮箱添加额外的电子邮件地址。 PowerShell 脚本将收集所有现有电子邮件地址,并将带有新域名后缀的新电子邮件地址添加为附加电子邮件地址。它不会删除现有的电子邮件地址。

  • 我公司使用公共域名a-d.site
  • 我公司额外购买了一个域名m365pilot.com

PowerShell 脚本将执行以下操作:

  • 将带有新域名后缀 m365pilot.com 的辅助 smtp 地址添加到所有 Exchange Online 邮箱。
  • 新电子邮件地址不会取代现有的主电子邮件地址,但会作为附加电子邮件地址添加。
  • 它将保留所有其他现有电子邮件地址,例如收件人的代理、SIP 或 x500 电子邮件地址。

在我们的示例中,电子邮件地址使用域 (a-d.site),我们将为所有邮箱更改为另一个新域 (m365pilot.com)

  1. 第 3 行中输入新的域名
  2. 运行以下 PowerShell 脚本
$Mailboxes = Get-Mailbox -Filter { IsDirSynced -eq $false } -ResultSize Unlimited
foreach ($Mailbox in $Mailboxes) {
    $NewAddress = $Mailbox.Alias + "@m365pilot.com"
    if ($Mailbox.EmailAddresses -notcontains "smtp:$NewAddress") {
        $Mailbox.EmailAddresses += $NewAddress
        Set-Mailbox -Identity $Mailbox.Alias -EmailAddresses $Mailbox.EmailAddresses
        Write-Host "Added secondary smtp address $NewAddress to $($Mailbox.UserPrincipalName)" -ForegroundColor Green
    }
    else {
        Write-Host "Secondary smtp address $NewAddress already exists for $($Mailbox.UserPrincipalName)" -ForegroundColor Yellow
    }
}

PowerShell 输出结果。

Added secondary smtp address [email protected] to [email protected]
Added secondary smtp address [email protected] to [email protected]
Added secondary smtp address [email protected] to [email protected]
Secondary smtp address [email protected] already exists for [email protected]
Secondary smtp address [email protected] already exists for [email protected]
Added secondary smtp address [email protected] to [email protected]
Secondary smtp address [email protected] already exists for [email protected]
Secondary smtp address [email protected] already exists for [email protected]

为所有邮箱添加带有新域名后缀的主 SMTP 地址

我们将用使用不同域名后缀的新 SMTP 地址替换现有的地址,而不删除其他电子邮件地址。

  • 我公司使用公共域名a-d.site
  • 我司额外购买域名m365pilot.com

PowerShell 脚本将执行以下操作:

  • 将当前主电子邮件地址替换为使用域名后缀 m365pilot.com 的新主电子邮件地址。
  • 它不会删除以前的主地址,而是将其更改为别名 (smtp) 电子邮件地址。
  • 所有其他现有电子邮件地址(例如收件人的代理、SIP 或 x500 电子邮件地址)都将保留。

在我们的示例中,主电子邮件地址有一个域 (a-d.site),我们将为所有邮箱更改为另一个新域 (m365pilot.com)。它将添加新的主电子邮件地址并替换旧的主电子邮件地址。

  1. 第 3 行中输入新的域名
  2. 运行以下 PowerShell 脚本
$Mailboxes = Get-Mailbox -Filter { IsDirSynced -eq $false } -ResultSize Unlimited
foreach ($Mailbox in $Mailboxes) {
    $NewAddress = $Mailbox.Alias + "@m365pilot.com"
    if ($Mailbox.PrimarySmtpAddress -notlike "$NewAddress") {
        Set-Mailbox -Identity $Mailbox.Alias -WindowsEmailAddress $NewAddress
        Write-Host "Changed primary SMTP address $($Mailbox.PrimarySmtpAddress) to $NewAddress" -ForegroundColor Green
    }
    else {
        Write-Host "Primary SMTP address $NewAddress is already set for $($Mailbox.PrimarySmtpAddress)" -ForegroundColor Yellow
    }
}

PowerShell 输出显示以下结果。

Changed primary SMTP address [email protected] to [email protected]
Primary SMTP address [email protected] is already set for [email protected]
Changed primary SMTP address [email protected] to [email protected]
Changed primary SMTP address [email protected] to [email protected]
Changed primary SMTP address [email protected] to [email protected]
Changed primary SMTP address [email protected] to [email protected]
Primary SMTP address [email protected] is already set for [email protected]
Primary SMTP address [email protected] is already set for [email protected]

从 CSV 文件添加主要和辅助电子邮件地址

在此示例中,我们希望替换主 SMTP 地址并从 CSV 文件添加辅助地址,而不删除收件人的任何现有别名。

请按照以下步骤创建 CSV 文件来替换主 SMTP 地址和辅助电子邮件地址:

  1. 将第一列命名为收件人并列出其下的所有收件人
  2. 将第二列命名为 PrimaryEmail,并列出所有主电子邮件地址
  3. 将第三列命名为 AliasEmail,并列出所有电子邮件地址
  4. 使用分号 (;) 字符分隔 AliasEmail 列下的电子邮件地址

[玩转系统] 如何使用 PowerShell 添加电子邮件地址

  1. 将文件命名为 EmailAddresses 并将其另存为 CSV 文件
  2. 如果您没有,请在 (C:) 驱动器中创建一个 temp 文件夹
  3. 保存临时文件夹中的 EmailAddresses.csv 文件
  4. 为了确保 PowerShell 可以读取该文件,请运行 Import-Csv cmdlet
Import-Csv "C:\temp\EmailAddresses.csv"
  1. 第 1 行中指定CSV 路径文件
  2. 运行以下 PowerShell 脚本
$Recipients = Import-Csv "C:\temp\EmailAddresses.csv"
foreach ($Mailbox in $Recipients) {
    $PrimaryEmail = $Mailbox.PrimaryEmail
    $AliasEmails = $Mailbox.AliasEmail -split ';'

    # Get current email addresses of the mailbox
    $EXOMailbox = Get-Mailbox -Identity $Mailbox.Recipient

    foreach ($Alias in $AliasEmails) {
        # Check if alias already exists
        if ($EXOMailbox.EmailAddresses -notcontains "smtp:$Alias") {
            Set-Mailbox -Identity $Mailbox.Recipient -EmailAddresses @{add = "smtp:$Alias" } -WarningAction SilentlyContinue
            Write-Host "Adding alias email address '$Alias' to $($Mailbox.Recipient)" -ForegroundColor Green
        }
        else {
            Write-Host "Alias email address '$Alias' already exists for $($Mailbox.Recipient). Skipping..." -ForegroundColor Yellow
        }
    }
    # Set the primary email address if it's different from the current primary email
    if ($PrimaryEmail -ne $EXOMailbox.PrimarySMTPAddress) {
        Set-Mailbox -Identity $Mailbox.Recipient -WindowsEmailAddress $PrimaryEmail -WarningAction SilentlyContinue
        Write-Host "Setting primary email address to '$PrimaryEmail' for $($Mailbox.Recipient)" -ForegroundColor Green
    }
    else {
        Write-Host "Primary email address '$PrimaryEmail' is already set for $($Mailbox.Recipient). Skipping..." -ForegroundColor Yellow
    }
}

PowerShell 脚本将执行以下操作:

  • 添加新的别名 smtp 地址
  • 设置新的主 SMTP 地址
  • 旧的主 SMTP 地址将更改为别名 smtp 地址
  • 它还将保留收件人的所有现有电子邮件地址
  • 它显示主电子邮件地址和别名电子邮件地址是否已设置
Adding alias email address '[email protected]' to [email protected]
Adding alias email address '[email protected]' to [email protected]
Alias email address '[email protected]' already exists for [email protected]. Skipping...
Setting primary email address to '[email protected]' for [email protected]

从 CSV 文件添加辅助 smtp 电子邮件地址

在下一个示例中,我们只想从 CSV 文件添加辅助 smtp 地址,而不删除收件人的任何现有别名。

您可以选择向 CSV 文件中的每个收件人添加一个或多个辅助 smtp 电子邮件地址。

您需要创建一个 CSV 文件:

  1. 将第一列命名为收件人并列出其下的所有收件人
  2. 将第三列命名为 AliasEmail,并列出其下的所有电子邮件地址
  3. 使用分号 (;) 字符分隔 AliasEmail 列下的电子邮件地址。

[玩转系统] 如何使用 PowerShell 添加电子邮件地址

  1. 将文件命名为 SecondaryAddresses 并将其另存为 CSV 文件
  2. 如果您没有,请在 (C:) 驱动器中创建一个 temp 文件夹
  3. 保存临时文件夹中的SecondaryAddresses.csv文件
  4. 为了确保 PowerShell 可以读取该文件,请运行 Import-Csv cmdlet
Import-Csv "C:\temp\SecondaryAddresses.csv"
  1. 第 1 行中指定CSV 路径文件
  2. 运行以下 PowerShell 脚本
$Recipients = Import-Csv "C:\temp\SecondaryAddresses.csv"
foreach ($Mailbox in $Recipients) {
    $AliasEmails = $Mailbox.AliasEmail -split ';'

    # Get current email addresses of the mailbox
    $EXOMailbox = Get-Mailbox -Identity $Mailbox.Recipient

    foreach ($Alias in $AliasEmails) {
        # Check if alias already exists
        if ($EXOMailbox.EmailAddresses -notcontains "smtp:$Alias") {
            Set-Mailbox -Identity $Mailbox.Recipient -EmailAddresses @{add = "smtp:$Alias" } -WarningAction SilentlyContinue
            Write-Host "Adding alias email address '$Alias' to $($Mailbox.Recipient)" -ForegroundColor Green
        }
        else {
            Write-Host "Alias email address '$Alias' already exists for $($Mailbox.Recipient). Skipping..." -ForegroundColor Yellow
        }
    }
}

就是这样!

了解更多:如何使用 PowerShell 分配 Microsoft 365 许可证 »

结论

您学习了如何使用 PowerShell 添加电子邮件地址。如果您只想添加单个邮箱的电子邮件地址,可以使用 Exchange 管理中心或 PowerShell。但是,使用 PowerShell 更改多个邮箱的主 SMTP 地址和辅助电子邮件地址会更快。

您喜欢这篇文章吗?您可能还喜欢管理 Microsoft 365 用户密码。不要忘记关注我们并分享这篇文章。

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

取消回复欢迎 发表评论:

关灯