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

[玩转系统] 使用 PowerShell 管理电子邮件地址 |办公室365

作者:精品下载站 日期:2024-12-14 08:40:18 浏览:13 分类:玩电脑

使用 PowerShell 管理电子邮件地址 |办公室365


当前文章和下一篇文章作为“PowerShell 命令参考”创建,用于与使用 PowerShell 的“在基于 Office 365 和 Exchange Online 的环境中管理电子邮件地址”主题相关的各种任务。

使用 PowerShell 将电子邮件地址添加到 Exchange Online 收件人

“使用设置邮箱命令添加电子邮件地址 |邮箱收件人

Exchange Online 包括多种类型的收件人,例如“邮箱收件人”、“组收件人”、“联系人收件人”、“公用文件夹收件人”等。

大多数与添加新电子邮件地址任务相关的 PowerShell 命令示例都与 Exchange Online“邮箱收件人”相关。

我们用于添加或删除“邮箱收件人”的电子邮件地址的 PowerShell cmdlet 是 PowerShell 命令 Set-Mailbox。

[玩转系统] 使用 PowerShell 管理电子邮件地址 |办公室365

存储有关电子邮件地址的信息的属性

有关 Exchange Online“邮箱收件人”的电子邮件地址(以及其他类型的地址)的信息,存储在“EmailAddress 属性”中,该属性充当逻辑容器,用于与该邮件关联的所有电子邮件地址。 “邮箱收件人”的。

例如,“EmailAddress属性”包含有关主电子邮件地址、代理电子邮件地址、x500地址、SIP地址等的信息。

附加“邮箱收件人”属性,其中包含有关收件人的信息。主要电子邮件地址是 WindowsEmailAddress 属性。

尽管有关主电子邮件地址的信息出现在“EmailAddress 属性”中,但我们将使用 WindowsEmailAddress 属性来执行需要更新主电子邮件地址的任务。

不同类型的 Exchange Online 用户邮箱电子邮件地址

大多数时候,术语“电子邮件地址”被翻译为“SMTP 电子邮件地址”。 Exchange Online 收件人可以有其他类型的“地址”,例如 x500 电子邮件地址和 SIP 地址。我们将简要介绍这种类型的“地址”。

向 Exchange Online 收件人添加电子邮件地址的两种方法

添加新电子邮件地址的任务可以通过两种方法来实现:

1.使用默认的 Set-Mailbox 命令语法

这是最不推荐的方法,因为当我们使用此选项时,新电子邮件地址将“覆盖”现有电子邮件地址并删除现有电子邮件地址,例如
代理电子邮件地址。

2.使用设置邮箱命令+“@{add”方法

这是更优选的方法,因为当我们使用“@{add”方法时,新的电子邮件地址将“加入”现有的收件人电子邮件地址,而不是替换和删除现有的电子邮件地址。

[玩转系统] 使用 PowerShell 管理电子邮件地址 |办公室365

替换/更新现有的主电子邮件地址 |邮箱收件人

方法 1#2 - 添加(替换)主电子邮件地址 |使用默认的 Set-Mailbox 命令语法

如果我们使用带有参数“-EmailAddress”的 PowerShell Set-Mailbox 并指定电子邮件地址,PowerShell 将使用提供的电子邮件地址来替换现有的主电子邮件地址。

之前的主电子邮件地址将保存为:代理电子邮件地址。所有现有收件人电子邮件地址将被删除

如前所述,这是最不优选的方法。

替换现有的主要电子邮件地址 |方法1#2

PowerShell命令语法:

Set-Mailbox <Identity> -EmailAddress <NEW primary E-mail address>

PowerShell 命令示例:

Set-Mailbox "Bob" -EmailAddress [email protected]

方法 2#2 - 添加(替换)主电子邮件地址 |设置属性 - WindowsEmailAddress

这是首选方法,因为使用此方法时,不会删除 Exchange Online 收件人的其他电子邮件地址。

在此方法中,我们“寻址”名为 WindowsEmailAddress 的其他 Exchange Online 邮箱属性。

Exchange Online 邮箱属性 - WindowsEmailAddress,“包含”收件人的主电子邮件地址。

如果我们设置 WindowsEmailAddress 属性中存储的电子邮件地址的值,则 Exchange Online 收件人主电子邮件地址也会更新。

替换现有的主要电子邮件地址 |方法2#2

PowerShell命令语法:

Set-Mailbox <Identity> -WindowsEmailAddress <NEW primary E-mail address>

PowerShell 命令示例:

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

使用“@{add”方法添加额外的电子邮件地址(代理电子邮件地址)

当使用“@{add”PowerShell 方法时,我们指定的电子邮件地址将作为附加电子邮件地址添加到现有的“电子邮件地址数组”中。

要向收件人添加额外的电子邮件地址而不“影响”现有电子邮件地址,我们可以使用以下语法:

添加代理电子邮件地址

PowerShell命令语法:

Set-Mailbox <identity> -EmailAddresses @{add="<E-mail address>"}

PowerShell 命令示例:

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

添加多个代理电子邮件地址

如果我们需要添加多个电子邮件地址,我们可以用逗号分隔每个电子邮件地址。

PowerShell 命令示例:

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

添加其他类型的地址

添加或更新SIP地址|邮箱收件人

如果我们需要添加 SIP 地址或替换现有的 SIP 地址,我们可以使用以下 PowerShell 命令语法:

PowerShell命令语法:

Set-Mailbox <identity> -EmailAddresses SIP:<SIP Address>

PowerShell 命令示例:

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

添加或更新 x500 电子邮件地址 |邮箱收件人

PowerShell命令语法:

$User=Get-Mailbox <Identity>
$User.EmailAddresses+="<X.500 Email Address>"
Set-Mailbox <Identity> -EmailAddresses $User.EmailAddresses

PowerShell 命令示例:

$User=Get-Mailbox John
$User.EmailAddresses+="X500:/O=ORG /OU=FIRST ADMINISTRATIVE GROUP/CN=RECIPIENTS/CN=XX"
Set-Mailbox John -EmailAddresses $User.EmailAddresses

在目录同步环境中更新 Exchange Online 邮箱属性

如果您的基础架构基于目录同步环境或Exchange 混合环境我们无法使用“Exchange Online PowerShell”来实施配置更新“云对象”,例如 Exchange Online 收件人邮箱。

在这种类型的场景中,我们需要从本地环境运行各种电子邮件地址管理任务。

例如,如果我们有 Exchange 混合环境,并且需要更新收件人的电子邮件地址,例如“远程邮箱收件人”(拥有 Exchange Online 邮箱的收件人),我们将需要使用“Exchange 本地 PowerShell 控制台。”

要更新从 Exchange 本地同步的 Exchange Online 邮箱收件人的主电子邮件地址,我们需要使用以下语法从 Exchange 本地 PowerShell 控制台运行命令:

PowerShell命令语法:

Set-RemoteMailbox <Mailbox> -EmailAddresses <Primary E-mail address> -EmailAddressPolicyEnabled $false

PowerShell 命令示例:

Set-RemoteMailbox "John" -EmailAddresses [email protected] -EmailAddressPolicyEnabled $false

使用PowerShell 实现批量操作|字首

在接下来的部分中,我们将回顾使用“批量模式”更新现有电子邮件地址或添加其他电子邮件地址的各种场景。

批量过程可以被视为一个非常强大的工具,但同时,时间可以被视为一个“危险工具”,因为我们执行的更新可能会影响所有现有的 Exchange 收件人。
因此,我的建议使用“测试邮箱”并使用 PowerShell 参数“Whatif”来测试批量操作。

定义“收件人数组”的两种方法

在以下部分中,我们回顾两种使用批量模式的方法:

  • 方法 1 - 通过使用存储 PowerShell 命令(例如 Get-Mailbox)内容的变量来定义收件人“数组”。
  • 方法 2 - 通过使用存储从 CSV 文件“获取”的内容的变量来定义收件人“数组”,其中包括我们要更新其电子邮件地址的收件人的信息。

场景描述。

我们审查的示例将基于以下场景:

  • 我公司使用公共域名 - o365info.com
  • 我们公司购买了额外的域名 - o365pilot.com

目前,所有公司用户的电子邮件地址均使用域名后缀“o365pilot.com”。

我们的任务是:

  • 场景 1 - 将现有主电子邮件地址替换为使用新域名 (o365pilot.com) 的新主电子邮件地址
  • 场景 2 - 使用新域名 (o365pilot.com) 添加额外的电子邮件地址(代理电子邮件地址)

1. 使用新域名后缀向所有邮箱收件人添加额外的别名电子邮件地址 |批量模式

在下一节中,我们回顾使用 PowerShell 批量脚本的过程,该脚本将执行以下任务:

为我们的每个 Exchange Online 邮箱收件人添加一个新的别名电子邮件地址,该地址使用新的域名后缀。

在我们的场景中,附加电子邮件地址(代理电子邮件地址)基于以下结构:

  • 新电子邮件地址“别名”(左侧部分)将与收件人主要电子邮件地址的别名相同。
  • 电子邮件地址后缀(电子邮件地址的右侧部分)将使用“新域名
    名称后缀 - “o365pilot.com”。

使用特定域名后缀添加新的代理电子邮件地址。

$Domainsuffix = Read-Host "Type the name of the Domain name suffix"
$AllMailboxes = Get-Mailbox -ResultSize Unlimited
Foreach ($Mailbox in $AllMailboxes) {
    # Creating NEW E-mail address that contracted in the following way: Take the existing recipient Alias name + use the NEW Domain name as a domain suffix + "Bind" the Alias name + the NEW Domain name suffix.
    $NewAddress = $Mailbox.Alias + "@$Domainsuffix"
    # "Store" all existing E-mail addresses + add the NEW E-mail address as an additional E-mail address.
    $Mailbox.EmailAddresses += $NewAddress
    # Assign the NEW E-mail address to the existing Exchange Online recipient
    Set-Mailbox -Identity $Mailbox.Alias -EmailAddresses $Mailbox.EmailAddresses #-whatif
}

2. 将主电子邮件地址域名后缀替换为新域名后缀 |批量模式

在下一节中,我们回顾使用 PowerShell 批量脚本的过程,该脚本将执行以下任务:
用新的主电子邮件地址替换现有的主电子邮件地址,该地址使用每个 Exchange Online 邮箱收件人都有不同的域名后缀。

我们被要求落实以下任务:

  • 将使用域名后缀“o365info.com”的当前主电子邮件地址替换为使用域名后缀 - o365pilot.com
  • Exchange 收件人的别名(电子邮件地址的右侧部分)将保持不变。换句话说,我们希望保留当前主电子邮件地址中的现有别名,并用新的域名后缀替换“左侧部分”(域名后缀)。
  • 之前的主电子邮件地址不会被删除,而是保存为别名
    电子邮件地址(附加电子邮件地址)。
  • 收件人的所有现有别名电子邮件地址和其他地址(例如 SIP 地址)将被保留。

将主电子邮件地址域名后缀替换为新域名后缀。

Foreach ($Mailbox in $AllMailboxes) {
    # Creating NEW E-mail address that contracted in the following way: Take the existing recipient Alias name + use the NEW Domain name as a domain suffix + "Bind" the Alias name + the NEW Domain name suffix.
    $NewAddress = $Mailbox.Alias + "@o365pilot.com"
    Set-Mailbox -Identity $Mailbox.Alias -WindowsEmailAddress $NewAddress #-whatif
}

实施批量操作 - 使用 CSV 文件 |字首

在下一节中,我们将回顾几个实现管理“电子邮件地址”任务的场景,例如 - 通过从 CSV 文件导入信息来添加电子邮件地址。

CSV 文件充当保存数据的“逻辑容器”。

在我们的场景中,CSV 用作保存有关 Exchange Online 收件人及其我们要添加的电子邮件地址的数据的容器。

我们在场景中使用的 CSV 文件的结构

CSV 文件中的每一列都有标题名称

当我们需要处理存储在特定列中的信息时,我们向 PowerShell 命令提供特定列标题的名称。

从技术上来说,CSV文件只是一个文本文件,我们可以使用简单的文本编辑器来编辑文件内容。

大多数时候,我们会使用其他应用程序(例如 Microsoft Excel)来编辑 CSV 文件,因为使用 Excel 编辑数据更加方便。

在下面的屏幕截图中,我们可以看到在 Excel 中打开的 CSV 文件的示例。

[玩转系统] 使用 PowerShell 管理电子邮件地址 |办公室365

CSV 文件列标题名称

使用 CSV 文件时,我们可以“选择”任何适合我们需要的列标题名称。建议选择有意义的列标题名称,并且不要使用任何空格。

CSV 文件包含三列:

  • 名为 - 收件人(数字 1)的列包含我们的“收件人身份”。从技术上讲,我们可以使用各种收件人属性来定义“收件人身份”。
    例如,收件人别名、收件人电子邮件地址、收件人显示名称等等。在我们的具体示例中,我们使用收件人“显示名称”作为收件人身份。
  • 名为 - PrimaryEmail 的列(数字 2)包含我们希望设置为“主要电子邮件地址”的用户电子邮件地址”。
  • 名为 - AliasEmail 的列(数字 3)包含我们希望设置为
    “别名 E”的用户电子邮件地址-邮件地址。”

从 CSV 文件导入信息

大多数时候,我们通过定义一个包含 PowerShell 命令内容的变量(Import-CSV)来“获取”存储在 CSV 文件中的信息。

在我们的示例中,我们定义了一个名为 - $Recipients 的变量,它将“包含”我们导入的 CSV 文件的内容。

$Recipients = Import-Csv C:\Temp\Recipient-E-mail-addresses.csv

从 CSV 文件导出信息

“从 CSV 文件导入信息”的操作基于我们将所需信息导出到 CSV 文件的预备步骤。您可以在文章使用 PowerShell 导出和显示有关电子邮件地址的信息 | 中阅读有关我们用于将信息导出为各种类型的文件格式的 PowerShell 语法过程的更多信息。办公室 365 |第 6 部分#13。

关于“我们导出到文件的信息是什么”的主题,您可以阅读文章使用 PowerShell 显示有关电子邮件地址的信息 |使用哈希表和自定义表达式自定义输出 |办公室 365 |第 7#13 部分。

1. 通过从 CSV 文件导入信息来更新主 + 代理电子邮件地址 |批量模式

在下一个示例中,我们需要满足以下要求:

  • 用存储的新主电子邮件地址替换 (删除)现有主电子邮件地址在 CSV 文件中。
  • 用存储在中的新别名电子邮件地址替换 (删除)现有别名电子邮件地址CSV 文件。

将主电子邮件地址替换为 CSV 文件中存储的新主电子邮件地址。

$Recipients = Import-Csv C:\Temp\Recipient-E-mail-addresses.csv
Foreach ($Mailbox in $Recipients) {
    Set-Mailbox -Identity $Mailbox.Recipient -EmailAddresses $Mailbox.PrimaryEmail, $Mailbox.AliasEmail # -WhatIf
}

2. 通过从 CSV 文件导入信息来更新主 + 代理电子邮件地址 |保留现有收件人电子邮件地址 |批量模式

在下一个示例中,我们需要满足以下要求:

  • 用存储的新主电子邮件地址替换 (删除)现有主电子邮件地址在 CSV 文件中。
  • 添加 来自 CSV 文件的新别名电子邮件地址。新电子邮件地址将作为附加电子邮件地址添加到现有收件人电子邮件地址中。

请注意,与之前的场景相比,我们不希望删除收件人已有的现有别名电子邮件地址。相反,我们希望向现有的收件人电子邮件地址“数组”中添加一个额外的电子邮件地址。

用新域名后缀替换主电子邮件地址域名后缀

$Recipients = Import-Csv C:\Temp\Recipient-E-mail-addresses.csv
Foreach ($Mailbox in $Recipients) {
    Set-Mailbox -Identity $Mailbox.Recipient -EmailAddresses @{Add = $Mailbox.AliasEmail } # -WhatIf
}

3. 通过从 CSV 文件导入信息来添加多个代理电子邮件地址 |批量模式

在下一个场景中,我们需要向收件人添加存储在 CSV 文件中的其他代理电子邮件地址。

  • CSV 文件将代理电子邮件地址存储在名为“AliasEmail”的列中。
  • 收件人的姓名存储在名为“收件人”的列中。 ”

在下面的屏幕截图中,我们可以看到 CSV 文件的结构。

[玩转系统] 使用 PowerShell 管理电子邮件地址 |办公室365

添加多个代理电子邮件地址 - 从 CSV 文件导入

Import-Csv C:\temp\Recipient-Proxy-E-mail-addresses.csv | ForEach-Object {
    $Recipient = $_.Recipient
    $ProxyAddresses = $_.AliasEmail -split ';'
    Set-Mailbox -Identity $Recipient -EmailAddresses @{add = $ProxyAddresses }
}

在下一篇文章中,我们将了解使用 PowerShell 管理电子邮件地址 |办公室 365 |命令参考|第 2 部分#13。

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

取消回复欢迎 发表评论:

关灯