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

[玩转系统] 在 Office 365 中使用 PowerShell 管理通讯组 |将成员添加到现有通讯组 |第 3 部分#5

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

在 Office 365 中使用 PowerShell 管理通讯组 |将成员添加到现有通讯组 |第 3 部分#5


当前文章是五篇文章系列的第三篇文章,专门讨论使用 PowerShell 在基于 Office 365 和 Exchange Online 的环境中管理通讯组的主题。

本文专门讨论使用 PowerShell 将成员添加到现有通讯组的主题。

在 Office 365 中使用 PowerShell 管理通讯组 |系列文章

  • 在 Office 365 中使用 PowerShell 管理通讯组 | PowerShell 命令参考 |第 1#5 部分
  • 在 Office 365 中使用 PowerShell 管理通讯组 |创建新通讯组并管理现有通讯组 |第 2 部分#5
  • 在 Office 365 中使用 PowerShell 管理通讯组 |将成员添加到现有通讯组 |第 3 部分#5
  • 在 Office 365 中使用 PowerShell 管理通讯组 |查看和导出有关通讯组的信息 |第 4 部分#5
  • 在 Office 365 中使用 PowerShell 管理通讯组 |删除通讯组和成员|转换通讯组|第 5 部分#5

将成员添加到通讯组 - 前缀

在接下来的部分中,我们将回顾两个主要场景,其中我们需要向现有分发组添加“新成员”。

  • 场景 1#2 - 在此场景中,我们希望将“大量”用户添加到特定的通讯组(多对一关系)。
  • 场景 2#2 - 在此场景中,我们希望将特定用户添加到“批量”通讯组(一对多关系)。

将新成员添加到通讯组的管理任务是通过使用下面的 PowerShell cmdlet 来实现的。

Add-DistributionGroupMember

使用通讯组列表和通讯组成员列表。

在下一节中,我们将讨论一个可以描述为“组”、“列表”的概念,或者如果我们想使用更专业的术语“数组”。

该术语定义了一个逻辑容器,“存储对象(成员)

在特定场景中,我们将使用包含用户对象或分发组对象的“数组”。

[玩转系统] 在 Office 365 中使用 PowerShell 管理通讯组 |将成员添加到现有通讯组 |第 3 部分#5

在我们的示例中,我们使用以下方法之一创建一个“数组”:

  • 选项 1:根据不同 PowerShell 命令的输出创建的数组。
    例如,我们从
    PowerShell 命令 Get-DistributionGroup 获取的现有通讯组列表
  • 选项 2:使用文件作为“数组”的“源”。
    在这种情况下,我们使用一个文件(大多数情况下是 CSV 文件),其中包含分发组列表、用户列表等在。
  • 选项 3:通过手动提供所需通讯组的“列表”或用户列表来创建“数组”。在这种情况下,我们手动提供每个通讯组或每个用户的名称,并用逗号分隔。

[玩转系统] 在 Office 365 中使用 PowerShell 管理通讯组 |将成员添加到现有通讯组 |第 3 部分#5

场景 1 - 将用户(收件人)添加到通讯组

这是一个简单的场景,我们希望将特定用户添加到通讯组。

在此示例中,我们“写下”通讯组的名称以及将添加到通讯组的“成员”的名称。

场景 1 - 将用户(收件人)添加到通讯组

这是一个简单的场景,我们希望将特定用户添加到通讯组。

在此示例中,我们“写下”通讯组的名称以及将添加到通讯组的“成员”的名称。

将用户(收件人)添加到通讯组

PowerShell命令语法:

Add-DistributionGroupMember "<Distribution Group Name>" -Member <Identity>

PowerShell 命令示例:

Add-DistributionGroupMember -Identity "Sales UK" -Member Bradp

将用户列表添加到特定通讯组

在下一节中,我们回顾不同场景的示例,它们的共同点是我们需要将“用户列表”(数组)添加到特定的分发组。

这种场景可以描述为——多对一的关系。

[玩转系统] 在 Office 365 中使用 PowerShell 管理通讯组 |将成员添加到现有通讯组 |第 3 部分#5

场景 1 - 将“用户列表”(多个用户)添加到通讯组 |从 CSV 文件导入“成员列表”

在本例中,我们希望通过从 CSV(逗号分隔值)文件导入成员列表来将成员添加到现有通讯组。

在当前场景中,我们使用以下 PowerShell 命令将有关 Office 365 用户的信息导出到 CSV 文件:

PowerShell 命令示例:

Get-mailbox | Select DisplayName,Alias,PrimarySmtpAddress | Export-CSV c:\temp\Distribution-Groups-Members.csv -NoTypeInformation -Encoding utf8

CSV 文件结构和“逻辑”
CSV 文件结构基于“列”和“行”的概念。

[玩转系统] 在 Office 365 中使用 PowerShell 管理通讯组 |将成员添加到现有通讯组 |第 3 部分#5

在我们的示例中,CSV 文件包含用户列表。请注意,每个用户(每行)可以有几个“身份”。

例如,每个用户都具有以下身份:显示名称、别名和主电子邮件地址。

[玩转系统] 在 Office 365 中使用 PowerShell 管理通讯组 |将成员添加到现有通讯组 |第 3 部分#5

在我们的示例中,我们通过“获取”存储在名为 PrimaryE-mailaddress 的列中的用户身份来“关联”用户身份。

从技术上讲,我们可以选择另一个用户的身份,例如“DisplayName”或“Alias”。

[玩转系统] 在 Office 365 中使用 PowerShell 管理通讯组 |将成员添加到现有通讯组 |第 3 部分#5

PowerShell 命令结构。
我们使用的 PowerShell 脚本基于以下语法:

从 CSV 文件导入通讯组成员 |命令结构

PowerShell命令语法:

lt;Variable> = Import-CSV <path> ForEach (
lt;Variable> in
lt;Variable>) { Add-DistributionGroupMember -Identity "<DL NAME>" -Member
lt;Variable>.<Identity> }
  • 第 1#3 部分 - 在 PowerShell 命令的第一部分中,我们从 CSV 文件导入信息(用户列表)。在我们的示例中,我们“声明”了一个名为 $UsersList 的变量,该变量将用作 CSV 文件内容的逻辑容器。
  • 第 2#3 部分 - 在 PowerShell 命令的第二部分中,我们使用“ForEach”PowerShell 语句来执行“循环过程”。
  • PowerShell“循环过程”使用一个名为 - $User 的附加变量。
  • $User 变量充当“临时”容器,将为循环过程中的每个“周期”存储特定的用户身份。
  • 第 3#3 部分 - 这是“实际的 PowerShell 命令”,我们使用它 (Add-DistributionGroupMember) 将 CSV 文件中出现的每个用户添加到特定的通讯组。

在我们的示例中,分发组名称是“Marketing USA

请注意,我们通过使用“附加”到名为 PrimarySmtpAddress 的 CSV 文件中的特定列的 $User 变量的组合来与通讯组成员相关联,通过使用以下约定$User.PrimarySmtpAddress

换句话说,我们指示 PowerShell 循环进程使用 PrimarySmtpAddress 作为用户身份。

[玩转系统] 在 Office 365 中使用 PowerShell 管理通讯组 |将成员添加到现有通讯组 |第 3 部分#5

从 CSV 文件导入通讯组成员

PowerShell 命令示例:

$Userslist = Import-CSV C:\Temp\Distribution-Groups-Members.csv
ForEach ($User in $Userslist)
{
Add-DistributionGroupMember -Identity "Sales France" -Member $User.PrimarySmtpAddress
}

场景 2 - 将“用户列表”添加到通讯组 |部门等于X的用户。

在此场景中,我们的任务是查找其部门为“销售”的所有用户,以及这些用户所属的名为“全球销售”的分发组

在我们的示例中,该组织有几个销售部门,例如美国销售部、英国销售部等。

为了满足此要求,我们通过执行执行过滤搜索的 PowerShell 命令来创建所需的用户列表。

PowerShell 过滤搜索将查找所有用户,其部门以字符串 Sales* 开头。

我们使用变量 $SalesUsers 来存储有关用户列表的信息。

在下一步中,我们运行 PowerShell 循环进程,该进程将使用存储在
变量 - $SalesUsers 中的信息,并添加存储在 $SalesUsers 中的每个成员分配给分销组全球销售的strong>变量。

将其部门为销售的所有用户添加到通讯组*

PowerShell 命令示例:

$SalesUsers = Get-User | Where {$_.Department -like "Sales*"}
foreach ($User in $SalesUsers)
{
Add-DistributionGroupMember -Identity "Sales worldwide" -Member $User.name
}

将用户(收件人)添加到多个通讯组(批量模式)

在下一节中,我们回顾不同场景的示例,它们的共同点是 - 需要同时将特定用户添加到“许多”或“多个”(数组)分发组。

这种场景可以描述为——一对多的关系。

[玩转系统] 在 Office 365 中使用 PowerShell 管理通讯组 |将成员添加到现有通讯组 |第 3 部分#5

场景1 |将用户(收件人)添加到多个通讯组 |手动提供每个通讯组的名称。

在本节中,我想回顾一下我们想要将特定用户作为成员添加到通讯组列表(数组)中的场景

有关“目标分发组”的信息将作为 PowerShell 命令的一部分写入,并存储在变量中。

  • 我们想要添加为各个通讯组成员的用户是 - Brad

我们使用的PowerShell命令包括两部分:

  • 第 1#2 部分 - 在 PowerShell 命令的第一部分中,我们定义名为 - $GroupList 的 PowerShell 变量,它充当分发组“数组”的“逻辑容器”。换句话说,定义要添加用户的通讯组的列表。
  • 第 2#2 部分 - 在 PowerShell 命令的第二部分中,我们使用“ForEach”PowerShell 语句来执行“循环过程”。 PowerShell“循环过程”指示PowerShell:

    • “获取”$GroupList 中存储的信息
  • “获取”列表中第一个通讯组的名称。
  • 将用户名添加为通讯组的成员。

PowerShell 循环后,进程完成与“列表”中的“第一个分发组”相关的任务,PowerShell 循环进程从列表中的“第二个分发组”开始整个进程,直到“结束”或列表中的姓氏。

将用户(收件人)添加到多个通讯组

PowerShell命令语法:

$Variable = "<Distribution Group name>","<Distribution Group name>","<Distribution Group name>"
ForEach ($item in $Variable)
{Add-DistributionGroupMember -Identity $item -Member <Identity>}

PowerShell 命令示例:

$DistributionGroupsList = "Sales UK","Sales USA","Sales Italy"
ForEach ($item in $DistributionGroupsList)
{
Add-DistributionGroupMember -Identity $item -Member Bradp 
-BypassSecurityGroupManagerCheck
}

场景2 |将用户(收件人)添加到多个通讯组 |使用 PowerShell 命令获取所有现有通讯组的列表。

在这种情况下,我们想要将特定用户添加到所有现有的通讯组中。

为了能够满足此要求,我们需要定义一个“数组”,其中包括所有可用的分发组。

分发组数组将按以下方式定义:

我们将使用名为 $ALLDistributionGroups 的变量,它将存储 PowerShell 命令 Get-Distribution group -resultsize unlimited 的输出。

在 PowerShell 命令的第二部分中,我们使用 ForEach PowerShell 语句,对结果执行“循环过程”(数组包括现有分发组的列表)。

我们使用的 PowerShell 语法的示例是:

将用户(收件人)添加到多个通讯组

PowerShell 命令示例:

$ALLDistributionGroups = Get-Distributiongroup -resultsize unlimited
ForEach ($item in $ALLDistributionGroups)
{
Add-DistributionGroupMember -Identity $item -Member Bradp
}

场景3 |将用户(收件人)添加到多个通讯组 |从 CSV 文件中读取有关通讯组列表的信息。

在此示例中,有关“通讯组列表”的信息存储在 CSV 文件中。从技术上讲,除了包含通讯组名称的特定列之外,CSV 文件还可以包含许多附加“信息列”。

在我们的具体示例中,包含通讯组名称的列名为“GroupName”。

值得一提的是,列标题名称不是“预定义名称”或强制名称。

相反,列名只是我们选择的任意名称。唯一的“限制”是标头名称不能包含任何空格。

[玩转系统] 在 Office 365 中使用 PowerShell 管理通讯组 |将成员添加到现有通讯组 |第 3 部分#5

  • 在 PowerShell 命令的第一部分中,我们定义一个名为 $DistributionGroupsList 的变量,用于存储 CSV 文件(包含通讯组列表的 CSV 文件)的内容。
  • PowerShell 命令的第二部分将“访问”GroupName 列中存储的信息。

将用户添加到 CSV 文件中列出的多个通讯组

PowerShell 命令示例:

$DistributionGroupsList = Import-CSV C:\Temp\Distribution-Group-list.csv
ForEach ($Group in $DistributionGroupsList)
{
Add-DistributionGroupMember -Identity $Group.GroupName -Member Brad
}

场景4 |将用户(收件人)添加到多个通讯组 |获取过去 X 小时内创建的通讯组列表。

在以下示例中,我们希望将用户 Brad 添加为过去 48 小时内创建的所有通讯组的成员。

  • 第 1#2 部分 - 在 PowerShell 命令的第一部分中,我们定义名为 $AllNewDistributionGroups 的 PowerShell 变量。 $AllNewDistributionGroups 变量将存储 PowerShell 查询的输出,该查询“获取”所有“创建时间”小于或等于过去 40 小时的分发组。
  • 第 2#2 部分 - 在 PowerShell 命令的第二部分中,我们使用“ForEach”PowerShell 语句,对结果执行“循环过程”。 PowerShell 命令将通过使用 $Group 变量与每个通讯组关联,该变量将使用通讯组对象的“name”属性。

将用户添加到过去 48 小时内创建的通讯组

PowerShell 命令示例:

$AllNewDistributionGroups = Get-DistributionGroup | Where {$_.WhenCreated -ge ((Get-Date).AddHours(-48))}
ForEach ($Group in $AllNewDistributionGroups)
{
Add-DistributionGroupMember -Identity $Group.name -Member Bradp
}

场景 5 - 仅当用户还不是通讯组的成员时才将用户添加到通讯组

在以下场景中,我们希望验证特定用户是否是通讯组的成员,如果该用户不是通讯组的成员,我们希望将该用户添加为通讯组的成员。

场景描述

  • 我们要检查的用户是 - Bob。
  • 分销组名称是 - Sales France。

为了能够满足这个要求,我们可以使用以下PowerShell命令

PowerShell 命令示例:

$Recipient = Get-Recipient -Identity bob
$Group = get-DistributionGroup -Identity 'Sales France'
$GetMember = Get-DistributionGroupMember $Group.name
if ($Group.name -notcontains $Recipient.Name)
{Add-DistributionGroupMember -Identity $Group.Name -Member $Recipient.Name}

当前文章系列的下一篇文章

  • 在 Office 365 中使用 PowerShell 管理通讯组 |查看和导出有关通讯组的信息 |第 4 部分#5

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

取消回复欢迎 发表评论:

关灯