网站搜索

使用 PowerShell 添加电子邮件地址 - 从 CSV 文件导入 |批量模式 |办公室 365 |第 5 部分#13


在本文中,我们回顾了使用 PowerShell 的方式 - 通过导入 CSV 文件中存储的信息来添加和更新 Exchange 收件人的电子邮件地址。

使用 CSV 文件管理电子邮件地址 |批量模式

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

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

在我们的场景中,CSV 用作保存有关 Office 365 用户及其电子邮件地址的数据的容器,我们希望将其添加到 Exchange 收件人。

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

CSV 文件中的每一列都有标题名称。
当我们需要处理特定列中存储的信息时,我们向 PowerShell 命令提供特定列标题的名称。

在下面的屏幕截图中,我们可以看到我们在演示中使用的 CSV 文件的示例。

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

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

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

CSV 文件包含三列:

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

CSV 文件列标题名称

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

从 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 文件包含已有电子邮件地址的 Exchange Online 收件人姓名的情况下,“导入过程CSV 文件中的“”将以下列方式影响现有
电子邮件地址:

  1. 现有 Exchange Online 收件人主电子邮件地址将保存为代理电子邮件地址。
  2. CSV 文件中的“主电子邮件地址”将替换现有的主电子邮件地址。
  3. 任何现有的代理电子邮件地址都将被“删除”(删除)。

如果您觉得自己对这种“PowerShell 逻辑”感到困惑,请阅读“
用新电子邮件地址替换现有电子邮件地址”部分。

请注意,在这种情况下,现有电子邮件地址将被“删除”(删除),并替换为 CSV 文件中的以下列下显示的电子邮件地址:PrimaryEmail 和别名电子邮件。

在我们的示例中,我们要求 PowerShell 为每个收件人设置两个电子邮件地址。

  • 第一个电子邮件地址”定义为 - $Mailbox.PrimaryEmail,并将被 PowerShell“视为”主要电子邮件地址。
  • “第二个电子邮件地址”定义为 - $Mailbox.AliasEmail,并将被 PowerShell“视为”别名电子邮件地址。

快速提醒一下,PowerShell 会将第一个电子邮件地址关联为主电子邮件地址,并将所有其余电子邮件地址关联为别名(代理)电子邮件地址。

我们在示例中使用的 PowerShell 命令语法是:

$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 文件的新别名电子邮件地址。新电子邮件地址将作为附加电子邮件地址添加到现有收件人电子邮件地址中。

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

第 1 步:有关 Exchange Online 收件人的信息 + CSV 文件中存储的其他电子邮件地址。
我们将使用以下内容填充名为 $Recipients 的变量使用 PowerShell 命令 Import-CSV 存储在 CSV 文件中的信息。

在我们的示例中,有关别名电子邮件地址的信息保存在标题名称为 AliasEmail 的列中。

第 2 步:在此步骤中,我们要求 PowerShell 为出现的每个收件人添加一个额外的电子邮件地址(别名电子邮件地址)到现有的“电子邮件地址数组”中在 CSV 文件中,使用方法 @{Add。

$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 文件的结构。

“AliasEmail”列包含多个由分号; 字符分隔的电子邮件地址。

我们需要使用 PowerShell 命令,该命令将获取存储在名为 AliasEmail 的列中的每个电子邮件地址,并将它们作为代理电子邮件地址添加到收件人。

为了能够“告诉”PowerShell 命令 AliasEmail 中的信息包含由分号 ; 字符分隔的多个值,我们使用 PowerShell 参数 -split 。

我们使用的 PowerShell 命令语法是:

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 |第 6 部分#13

相关文章