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

[玩转系统] 在 Office 365 中使用 PowerShell 管理通讯组 |删除通讯组和成员|转换通讯组|第 5 部分#5

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

在 Office 365 中使用 PowerShell 管理通讯组 |删除通讯组和成员|转换通讯组|第 5 部分#5


当前文章是我们文章系列中的第五篇也是最后一篇文章,该文章专门讨论使用 PowerShell 在基于 Office 365 和 Exchange Online 的环境中管理分发组的主题。

在 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. 额外的分发组可操作的管理任务,我将其描述为“与分发组一起玩”。在本节中,我们将回顾两个使我们能够绕过分发组固有限制的“技巧”。

    • 将 Office 365 分发组转换为安全组,反之亦然。
  3. 向通讯组分配“完全访问”权限+使用自动映射选项。

1.删除通讯组+从通讯组中删除成员

在下一节中,我们将回顾与“删除”或“删除”相关的分发组管理任务:

  1. 分发组 - 为此,我们使用 PowerShell cmdlet - Remove-DistributionGroup
  2. 通讯组中的特定成员 - 为此,我们使用 PowerShell cmdlet - Remove-DistributionGroupMember

删除(移除)通讯组

要删除现有的通讯组,我们使用以下 PowerShell 命令:

PowerShell命令语法:

Remove-DistributionGroup "<Distribution Group Name>"

PowerShell 命令示例:

Remove-DistributionGroup "Sales USA "

注意 - 目前,Office 365 不提供恢复已删除的通讯组的选项。所以,在“冲向”扭曲的现有发行集团之前,请三思!

从通讯组中删除成员

为了能够从通讯组中删除特定成员,我们使用以下 PowerShell 语法。

PowerShell命令语法:

Remove-DistributionGroupMember -Identity "<Distribution Group name>" -Member "<Member name>"

PowerShell 命令示例:

Remove-DistributionGroupMember -Identity "Sales USA" -Member "Bob"

从他所属的所有通讯组中删除用户

在下面的场景中,我们希望满足以下需求:

我们想要获取特定用户所属的所有通讯组的列表。

然后,我们要从每个通讯组中删除该用户(他是该通讯组的成员)。

PowerShell 命令示例:

$DistributionGroups = Get-Distributiongroup -resultsize unlimited
$UserDName = read-host “Enter User Name"
$UserDName = (Get-Mailbox $User).name
"Searching which groups " + $User + " is a member of and removing membership..."
ForEach ($Group in $DistributionGroups)
{
if ((Get-Distributiongroupmember $Group.Name | select -expand name) -contains $UserDName)
{
write-host "Removing user from group '$Group'"
Remove-DistributionGroupMember -Identity "$Group" -Member "$UserDName" -Confirm:$false
}
}

从通讯组中删除所有成员

在以下场景中,我们希望从该通讯组中包含的所有成员中“清除”特定通讯组。

换句话说,我们想要“批量删除”所有现有成员。

为了能够满足此要求,我们可以使用以下 PowerShell 语法:

PowerShell 命令示例:

$DistributionGroupMember = Get-DistributionGroupMember "IT"
ForEach ($member in $DistributionGroupMember)
{
Remove-DistributionGroupMember -Identity IT -Member $member.name -Confirm:$false
}

如何将通讯组转换为安全组 |技巧和窍门

让我们从一个简单的事实开始,目前 Office 365 和 Exchange Online 环境不提供将现有通讯组转换为安全组(最准确的术语是启用邮件的安全组)的选项。

我使用术语“转换”来描述可以部分模拟将组从类型 X 转换为类型 Y 的过程的过程。

我提供的解决方案基于以下步骤:

  1. 创建一个新的安全分发组。
  2. 将现有通讯组中的所有成员复制到“目标”安全通讯组。
  3. 删除\删除通讯组

对我来说,值得一提的是,我们将数字从一种类型的组(分发组)复制到“其他组”(安全组)的“技巧”是不提供“完整的解决方案” 因为,组属性(例如邮件权限或其他分发组属性)不会“迁移”到新组。

在下面的部分中,我提供了两种“风格”的 PowerShell 脚本,用于实现“群组对话过程”。

第一个示例实现了一个非常基本的过程,将通讯组成员复制到新组。

将成员从通讯组复制到安全组

PowerShell 命令示例:

$Members = Get-DistributionGroupMember -id "<Name of the source group>"
ForEach ($Member in $Members)
{
Add-DistributionGroupMember -Identity "<Name of the destination security group>" -Member $Member.name
}

第二个示例提供了更“复杂的操作”并执行以下任务:

  • 创建新的“目的地安全组”
  • 定义基于以下命名约定的组名称 - 分发组的名称 + 字符串“NEW”。
  • 将记忆从分发组复制到临时变量。
  • 将通讯组成员复制到“新安全组”。

变化2

PowerShell 命令示例:

$DistributionGroupName = Read-Host -prompt "Type the Distribution Group name"
$Members = Get-DistributionGroupMember -id $DistributionGroupName
New-DistributionGroup -Name $DistributionGroupName-NEW -Type Security
ForEach ($Member in $Members)
{
Write-host “NEW security group named - $DistributionGroupName-NEW created!”
Write-host “The security group - $DistributionGroupName-NEW contain all the members of the Distribution Group named - $DistributionGroupName”
Add-DistributionGroupMember -Identity "$DistributionGroupName-NEW" -Member $Member.name
}

向通讯组分配“完全访问”权限 + 使用自动映射选项 |技巧和窍门

在下一节中,我们将使用一个技巧,使我们能够向特定通讯组中的每个成员提供完全访问权限。

我们不会非常详细地解释 Exchange 和 Exchange Online 基础环境中可能的权限矩阵,但简短地解释一下,从技术上讲,我们无法向通讯组提供“其他对象”(例如 Exchange Online 邮箱)的权限,因为通讯组不“启用安全的对象”。

注意 - 如果您想阅读有关 Exchange Online 环境中“完全访问权限”主题的更多详细信息,您可以阅读文章 - 完全访问邮箱权限 - 您一直想知道但不敢问的一切第 1 部分/3

换句话说,从技术上讲,我们无法满足向其他 Exchange 邮箱上的通讯组提供完全访问权限的要求。

我们使用的技巧是通过以下方式绕过这个限制:

  • 我们获得特定通讯组中每个成员的列表
  • 我们暂时将此信息存储在变量中
  • 我们获取变量(通讯组成员)中存储的信息,并为“目标邮箱”上的每个成员分配完全访问权限。
  • 如果我们“直接”为特定的Exchange用户帐户分配完全访问权限,则“自动映射”功能将被激活,分配完全访问权限后,“目标邮箱”将自动出现在用户的Outlook邮件中轮廓。

提取通讯组成员,并为每个组成员分配完全访问权限

PowerShell命令语法:

$DistributionGroupName = Get-DistributionGroupMember "<Distribution Group name>"
ForEach ($Member in $DistributionGroupName)
{
Add-MailboxPermission -Identity "<mailbox identity>“ -User $Member.name -AccessRights ‘FullAccess’ -InheritanceType all
}
  • 在我们的示例中,通讯组名称是 - Sales France
  • 目标邮箱意味着我们要提供完全访问权限的邮箱是名为 - Brad 的用户的邮箱

提取通讯组成员,并为每个组成员分配完全访问权限

PowerShell 命令示例:

$DistributionGroupName = Get-DistributionGroupMember "Sales France"
ForEach ($Member in $DistributionGroupName)
{
Add-MailboxPermission -Identity "Bradp" -User $Member.name -AccessRights ‘FullAccess’ -InheritanceType all
}

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

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

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

取消回复欢迎 发表评论:

关灯