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

[玩转系统] 完全访问权限 |完全访问邮箱权限 – 您一直想知道但又不敢问的一切 1/3 .com

作者:精品下载站 日期:2024-12-14 08:41:04 浏览:15 分类:玩电脑

完全访问权限 |完全访问邮箱权限 – 您一直想知道但又不敢问的一切 1/3 .com


在本文中,我们将了解著名的邮箱权限的不同方面:完全访问权限。当我需要清楚地了解“完全访问邮箱权限”的概念和使用时,我发现了很多涉及此主题的文章,但我找不到完整且全面的文章来提供一系列不同的场景和可用于完全访问邮箱权限的各种选项的详细说明。

完全访问邮箱权限 |系列文章

完全访问邮箱权限文章系列包括以下三篇文章:

  1. 完全访问邮箱权限 - 第 1/3 部分(本文)
  2. 完全访问邮箱权限 - 第 2/3 部分
  3. 完全访问邮箱权限 - 第 3/3 部分

Exchange Online 环境中的权限类型

Exchange Online(以及 Exchange 本地)环境中的“权限”主题包括几个“权限类型”,使用户能够对另一个用户的邮箱执行特定操作。 发送为代表发送权限使特定用户能够使用另一个用户名“模拟”发送电子邮件,文件夹权限使用户能够访问文件夹(其他用户邮箱中的日历或联系人)以及邮箱权限,使用户能够访问其他用户邮箱的所有邮箱内容。

在本文中,我们详细回顾一下邮箱权限的主题。

图形界面与 PowerShell 界面

Exchange Online(和 Exchange On-Premises MMC)使我们能够使用简单的图形界面来管理邮箱权限。虽然很多时候我们更喜欢图形界面,但当我们需要实现更复杂和高级的任务时,PowerShell 具有巨大的优势。

在本文中,我想涵盖广泛的可能场景 - 使用 PowerShell 管理邮箱权限,此外,还提供有关可用于改进特定 PowerShell 命令的可用选项的更多背景详细信息。

邮箱权限 PowerShell 命令基本结构

PowerShell 邮箱权限命令的基本结构是使用以下语法编写的:

[玩转系统] 完全访问权限 |完全访问邮箱权限 – 您一直想知道但又不敢问的一切 1/3 .com

在我们的示例中,我们希望让 Alice 能够获得收听经理邮箱的完全访问权限。 -Identity 参数与想要“共享”其邮箱的用户(向其他用户提供访问其邮箱内容的选项)相关,而 -User 参数表示将获得邮箱访问权限的用户。

从技术上讲,没有强制要求使用此“顺序”,我们可以通过首先指定将获得“目标”用户邮箱(John)的完全访问权限的用户(Alice)来颠倒顺序。例如,以下 PowerShell 语法将提供相同的结果:

[玩转系统] 完全访问权限 |完全访问邮箱权限 – 您一直想知道但又不敢问的一切 1/3 .com

在大多数包含 PowerShell 语法代码示例的技术文章中,都使用第一种方案,因此在本文中,我们将坚持大多数时候使用的“标准”语法顺序。

“身份”参数

Identity 参数描述“想要”使其他用户对其邮箱具有完全访问权限的对象(用户)(在我们的示例中:John)。

Identity 参数的使用不是强制性的,因为在某些情况下(例如邮箱权限的命令语法),PowerShell 语法使我们能够使用较短版本的命令语法。

简而言之,Identity 参数的使用是可选的,大多数时候,我允许自己“放弃”使用 Identity 参数,以使编写 PowerShell 的任务变得最简单。

注意: 指定将拥有完全访问权限的用户的参数是我们无法避免指定该参数的用户,因为该参数不是可选的。

PowerShell 邮箱权限命令和其他参数

继承和继承类型

当我们使用PowerShell命令提供邮箱权限时,大多数时候,我们会添加与“继承”主题相关的参数。启用邮箱权限的基本 PowerShell 命令仅提供对用户邮箱中存在的当前邮箱文件夹的权限。如果用户将文件夹添加到其邮箱中,则具有完全访问权限的用户将无法访问此“新文件夹”。

为了避免这种情况,我们通常在基本命令结构中添加以下参数:-InheritanceType All。通过使用此参数,我们使具有完全访问权限的用户能够访问该用户将添加的所有其他文件夹。

自动绘图

AutoMapping 是一项自动向 Outlook(和 OWA)邮件配置文件添加用户具有完全访问权限的“附加邮箱”的功能。

例如:当我们向 Alice 提供对 John 邮箱的完全访问权限时,附加邮箱将自动添加到 Alice Outlook 邮件配置文件中。

AutoMapping 的目的是简化管理员(和用户)的生活。在以前版本的 Exchange 服务器中,向用户提供完全访问权限后,用户需要将其他邮箱手动添加到其 Outlook 配置文件中。

当我们提供完全访问邮箱权限时,默认的 PowerShell 命令将使用 AutoMapping 功能(AutoMapping 值设置为“True”)。

在某些情况下,我们希望避免这种默认情况。例如:在我们向管理员提供对所有用户邮箱的完全访问权限的场景中,大多数时候,我们不想使用自动映射功能,因为当管理员打开 Outlook 时,他的 Outlook 配置文件将不得不连接到数十或数百个附加邮箱。在本文后面,我们将回顾与 AutoMapping 的未来相关的其他场景。

邮箱和用户身份

当使用邮箱权限时,我们向User-A提供对另一个用户邮箱(User-B)的权限。通过使用“身份”来实现对“用户”的引用。

每个用户对象都有几个我们可以引用的“身份”。例如,我们可以使用用户别名、用户“显示名称”或用户电子邮件地址来确定用户的身份(我们可以使用其他类型的身份,例如代理地址、GUID 等)。 )。

最容易使用的是用户“别名身份”,但别名身份不是唯一值,在某些情况下,两个(或更多)用户可以具有相同的别名。如果我们想避免可能导致错误的情况,最佳实践是使用电子邮件地址身份。

Add-MailboxPermission -Identity "[email protected]" -User "[email protected]" -AccessRights FullAccess -InheritanceType All

在本文后面提供的代码示例中,我将使用用户别名作为身份来简化 PowerShell 代码示例。

例如:我们将使用用户,而不是使用电子邮件地址作为用户身份。别名:例如约翰和爱丽丝。

Add-MailboxPermission -Identity "John" -User "Alice" -AccessRights FullAccess -InheritanceType All

访问权

AccessRights 参数指定我们要分配的权限类型。

我们可以将“访问权限”视为持有特定权限子集的角色或容器。例如,完全访问权限是删除、更新、添加等权限的集合。

我们可以使用的可用权限有:

  • 完全访问
  • 外部账户
  • 删除项目
  • 读取权限
  • 更改权限
  • 变更所有者

最常见的使用权限是 - 完全访问权限。在本文将提供的演示中,我们将使用完全访问权限。

为组分配权限与为用户分配权限

在大多数包含邮箱权限的 PowerShell 代码示例的技术文章中,语法显示了一个场景,其中我们向用户 A 的邮箱提供对用户 B 的邮箱的完全访问邮箱权限。

一个大多数时候没有提到的被忽视的选项是,我们可以使用安全组选项来提供邮箱权限,而不是向特定用户提供权限。使用安全组提供邮箱权限有两个主要好处:

  1. 高效管理 - 例如:如果我们要为特定用户邮箱的 10 个用户提供邮箱权限,我们可以执行 PowerShell 命令 10 次,或者创建一个包含这 10 个用户的安全组,并将邮箱权限分配给该用户保安组。
  2. 安全组的“动态性质”——当我们将邮箱权限分配给安全组时,组成员会自动继承该组的权限。如果我们想为其他用户提供邮箱权限,只需将用户添加到安全组中,“新组成员”就会自动继承分配给该组的邮箱权限。

表 权限场景矩阵

ScenarioDescriptionOptional/non-optional1Assign to a user, mailbox permissions on the other User Mailbox.[玩转系统] 完全访问权限 |完全访问邮箱权限 – 您一直想知道但又不敢问的一切 1/3 .com2Assign mailbox permissions to a user, on a Security or a Distribution group.[玩转系统] 完全访问权限 |完全访问邮箱权限 – 您一直想知道但又不敢问的一切 1/3 .com3Assign mailbox permissions to a Security group on a User mailbox.[玩转系统] 完全访问权限 |完全访问邮箱权限 – 您一直想知道但又不敢问的一切 1/3 .com4Assign mailbox permissions to a Distribution group on a User mailbox.[玩转系统] 完全访问权限 |完全访问邮箱权限 – 您一直想知道但又不敢问的一切 1/3 .com5Assign mailbox permissions to a Security group on a Distribution group Member.[玩转系统] 完全访问权限 |完全访问邮箱权限 – 您一直想知道但又不敢问的一切 1/3 .com6Assign mailbox permissions to a Security group of other Security group Members.[玩转系统] 完全访问权限 |完全访问邮箱权限 – 您一直想知道但又不敢问的一切 1/3 .com7Assign mailbox permissions to a Distribution group Member on a Security group.[玩转系统] 完全访问权限 |完全访问邮箱权限 – 您一直想知道但又不敢问的一切 1/3 .com

Windows PowerShell 集成脚本环境 (ISE)

PowerShell 命令可以非常简单,也可以包含几行“代码行”(PowerShell 脚本)。当我们使用更复杂的代码时,标准 PowerShell 控制台有一些限制,因为将复杂结构的 PowerShell 代码复制并粘贴到 PowerShell 控制台并不容易。我想推荐的一个更好的选择是使用:ISE(Windows PowerShell 集成脚本环境)。

简而言之,ISE 是图形界面和 PowerShell 控制台界面的组合。 ISE 界面分为两个部分。

“顶部”(数字1)使我们能够粘贴或编写更复杂的PowerShell命令。 PowerShell 命令的不同部分(例如变量和参数)会自动使用不同的颜色。当我们选择“运行”选项时,PowerShell脚本将被激发到底部(数字2)。

在下面的截图中,我们可以看到ISE的界面。

[玩转系统] 完全访问权限 |完全访问邮箱权限 – 您一直想知道但又不敢问的一切 1/3 .com

使用 WhatIf 选项

我们在使用和测试 PowerShell 命令时可以使用的最有用的选项/工具之一是 -WhatIf 参数。 -WhatIf 参数使我们能够模拟 PowerShell 命令的可能结果。

在生产环境中,测试或模拟我们想要执行的 PowerShell 命令的结果至关重要。特别是在处理可能影响数十或数百个邮箱的批量模式命令时。

-WhatIf 参数的使用非常简单。我们需要做的就是在 PowerShell 命令末尾添加 -WhatIf 参数。

例如:如果我们要测试使用 PowerShell 命令为 Alice 提供对所有现有邮箱的完全访问权限会发生什么情况,我们可以使用 -WhatIf 来测试该命令范围。

Get-Mailbox | Add-MailboxPermission -User Alice -AccessRights FullAccess -WhatIf

当我们运行PowerShell命令时,“可能的结果”将显示在屏幕上。需要强调的是,当我们使用 -WhatIf 参数时,操作不会被执行(不会分配邮箱权限),而是显示“如果执行 PowerShell 命令可能会发生什么”。

分配权限、对象、数组、过滤列表和组

PowerShell环境的基本术语

在开始“实际操作”代码示例之前,花一些时间了解一些 PowerShell 术语和概念非常重要。

对象 - 在 PowerShell 中,术语“对象”是一个非常广泛的术语。我们可以使用术语“对象”来描述用户、邮箱、组甚至文件夹。

数组——术语“数组”有时并不那么清晰。我们使用术语“数组”来描述集合(多个)对象。术语数组的最简单示例可能是 PowerShell cmdlet 的结果:Get-Mailbox

当我们在 PowerShell 控制台中键入 Get-Mailbox 并按 ENTER 键时,我们会执行一项任务,其中 PowerShell 连接 Exchange Online 服务器,创建一个查询,询问有关所有现有邮箱的信息,并将结果显示在屏幕。我们可以说,显示的结果可以描述为“邮箱数组”。

- 我们也可以将术语“组”视为一种数组类型。组是一个或多个用户的集合。 (从技术上讲,我们可以创建一个空组,但如果没有任何用户,该组就没有任何用处)。

我们使用该组有两个主要目的:通讯组用于“摸索用户列表”,用于优化向一组收件人发送邮件的任务;安全组用于向用户“组”提供权限,而不是向每个用户提供权限分别对用户进行分类。

只是为了让您更加困惑,我们也可以将安全组定义为分发组。我们在此场景中使用的术语是启用邮件的安全组。

过滤列表 - 术语“过滤列表”,用于描述对象数组(大多数情况下是因为有时过滤列表的结果可能是单个对象)。明显的问题可能是:如果我们可以使用术语“数组”,为什么还要使用不同的术语?

答案是术语“过滤列表”有点不同。使用过滤列表(顾名思义)是当我们需要“拉出”具有共同章程的特定对象时。

这个需求可能有很多例子,例如:获取所有用户邮箱的列表(在 Exchange 环境中,还有其他类型的邮箱,如共享邮箱、房间邮箱等)、获取所有用户的列表有全局管理员的规则,获取具有特定域名后缀的所有用户的列表,获取在市场部门工作的所有用户的列表等等。

在本文后面,我们将回顾几个使用筛选列表的示例,我们还将回顾存储在文件中的筛选列表的使用(而不是使用创建筛选列表的 PowerShell 命令)。

PowerShell cmdlet 用于:创建筛选列表

PowerShell 环境包括两个 cmdlet,使我们能够从对象数组中过滤具有特定章程的对象:

PowerShell 其中 cmdlet 和 PowerShell cmdlet:筛选

这些 cmdlet 中的每一个都具有独特的语法,除了不同的语法之外,Filter cmdlet 和Where cmdlet 之间还存在其他差异。

在本文中,我们不会详细描述这两个 cmdlet 之间的差异,但重要的是要强调这两个 cmdlet 之间的主要差异。

当使用 Filter cmdlet 从对象数组中过滤信息时,“过滤器”是在服务器端创建的(在我们的例子中是 Exchange Online)。使用Where cmdlet 过滤信息时,过滤器是在客户端(我们使用PowerShell 控制台的桌面)创建的。

在 Office 365 环境中,使用筛选器 cmdlet 具有优势,因为 Exchange Online 使用限制策略来限制可以发送到客户端的数据量。 Filter cmdlet 的缺点是并非所有 PowerShell cmdlet 都支持使用 Filter cmdlet。

在下一节中,我们将演示如何使用 Filter cmdlet 来过滤信息。使用 Filter cmdlet 时,我们需要提供以下参数:

  • 对象类型(用户、组、邮箱等)
  • 逻辑运算符值,例如:等于、更大等。
  • 我们寻找的价值(共同特征)

使用过滤器(用于创建过滤列表)的一个示例可能是这样的场景:我们希望将邮箱权限分配给具有邮箱数组的用户,但仅限于定义为用户邮箱的邮箱。

为了能够从所有邮箱的数组中“拉出”这个邮箱,我们可以使用以下语法。

Get-Mailbox Filter {(RecipientTypeDetails -eq 'UserMailbox')}

另一个例子可能是这样的场景:我们想要获取用户列表,但仅限于在密封部门工作的用户。
为了能够从所有邮箱的数组中“拉出”此邮箱,我们可以使用以下语法。

Get-User Filter {(Department -eq "Sales")}

分配权限选项和概念

场景 1:为另一个对象上的对象分配权限

最基本的示例可能是向对象 A 对对象 B 提供邮箱权限。例如,向 Alice(用户对象)对 John 邮箱(用户对象)提供邮箱权限。

[玩转系统] 完全访问权限 |完全访问邮箱权限 – 您一直想知道但又不敢问的一切 1/3 .com

另一个示例可能是:为另一个对象(例如约翰的邮箱)上的安全组(组对象)提供邮箱权限。值得注意的是,PowerShell 环境将安全组作为“对象”进行关联,该“对象”可能拥有另一个对象的权限,因为安全组是一个安全对象。尽管安全组是一个或多个用户的集合,但 PowerShell 将安全组视为单个实体,该实体可以对其他对象(例如用户)拥有权限。

场景 2:为对象集合\组上的对象分配权限

另一个常见的场景是当我们想要为对象集合\组上的对象(例如用户)分配权限时。例如,我们要给特定用户分配邮箱权限,给所有邮箱(邮箱的集合)。

幸运的是,PowerShell 环境使我们能够通过使用管道符(“|”)非常轻松地实现此任务。

[玩转系统] 完全访问权限 |完全访问邮箱权限 – 您一直想知道但又不敢问的一切 1/3 .com

PowerShell 语句以创建列表对象的命令开头。在我们的示例中,是所有邮箱的集合(稍后我们将回顾用于根据我们将定义的过滤器创建自定义对象列表的不同选项)。最简单的选项是使用 PowerShell cmdlet:Get-Mailbox

我们将竖线(“|”)字符放置在 Get-Mailbox cmdlet 之后。通过这样做,我们告诉 PowerShell PowerShell 语句的下一部分将应用于使用 Get-Mailbox cmdlet 创建的列表(或数组)中的每个成员。

在我们的示例中,我们使用 Add-MailboxPermission cmdlet 为 Alice 提供所有邮箱的完全访问邮箱权限。

[玩转系统] 完全访问权限 |完全访问邮箱权限 – 您一直想知道但又不敢问的一切 1/3 .com

当我们使用切管机时,PowerShell 足够智能,可以理解我们希望为使用 PowerShell cmdlet 创建的数组中包含的每个邮箱提供邮箱权限:Get-Mailbox

我们写的PowerShell语句是:

Get-Mailbox | Add-MailboxPermission -User "Alice" -AccessRights FullAccess

让我们回顾一下此场景与前一个场景的各种变化。我们希望向所有用户提供对 Alice 邮箱的访问权限。基于前面场景的逻辑,我们需要使用诸如 Get-Mailbox 之类的命令来定义邮箱数组,并为“邮箱集合”提供 Alice 邮箱所需的权限。

不太好的消息是,在这种情况下,我们不能使用管道字符的简单选项。在这种情况下,PowerShell 不够智能,无法理解我们想要为用户邮箱提供数组中包含的每个邮箱的邮箱权限。为了能够完成此任务,我们需要使用名为:Foreach 的附加 PowerShell cmdlet

PowerShell cmdlet Foreach 使我们能够循环遍历集合中的每个项目(使用 Get-Mailbox 命令创建的数组中包含的所有用户)并对其执行操作。

简而言之:PowerShell cmdlet Foreach 扫描列表中的所有成员(数组中包含的所有邮箱),并开始分别为每个邮箱提供所需的权限。

例如:如果 Get-Mailbox 输出将包含 20 个邮箱的列表,则 PowerShell cmdlet Foreach 将运行 20 次。

[玩转系统] 完全访问权限 |完全访问邮箱权限 – 您一直想知道但又不敢问的一切 1/3 .com

为每个组成员提供权限

我们需要使用 PowerShell cmdlet Foreach 的其他场景是当我们想要为每个组的成员提供许可证时。

PowerShell 环境使我们能够向其他用户邮箱上的安全组提供许可证。

我们无法将用户的邮箱权限分配给安全组,也无法将权限分配给用户邮箱的通讯组。为了克服这个限制,我们需要使用 PowerShell cmdlet Foreach 来“提取”从邮箱列表中获取的内容,这样我们就可以分别与每个用户\邮箱选项相关联,而不是与组对象相关联。

我知道在这个阶段所有这些描述听起来有点令人困惑,但如果你有耐心,我稍后会变得更清楚。

场景 3:在对象集合/对象组上向对象集合/对象组分配权限

这种情况不太常见,但有时我们仍然需要使用此选项,此外,通过了解这种情况,我们将学习 PowerShell 句子逻辑的其他方面,这将使我们能够处理其他或变体这个场景。

[玩转系统] 完全访问权限 |完全访问邮箱权限 – 您一直想知道但又不敢问的一切 1/3 .com

为了实现这个场景,我们需要使用 PowerShell cmdlet Foreach 两次。我们第一次使用 PowerShell cmdlet Foreach 是为了提取组(或筛选列表)中的成员,第二次是为了从“目标组”(包含我们要查找的成员的组)中提取组成员。希望为其邮箱分配权限)。

在下一篇文章中,我们将研究完全访问邮箱权限 - 您一直想知道但不敢问的所有内容第 2/3 部分。

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

取消回复欢迎 发表评论:

关灯