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

[玩转系统] 使用Search-Mailbox PowerShell 命令- 简介| PowerShell第 1#5 部分

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

使用Search-Mailbox PowerShell 命令- 简介| PowerShell第 1#5 部分


当前的文章系列涉及一个非常有用且强大的 PowerShell 命令,名为 Search-Mailbox。我将 Search-Mailbox PowerShell 命令称为“瑞士刀”,因为我们可以在多种类型的场景中使用 Search-Mailbox PowerShell 命令。

连接到 Exchange Online PowerShell

为了能够运行本文中指定的 PowerShell 命令,您需要连接到 Exchange Online PowerShell。

以管理员身份启动 Windows PowerShell 并运行 cmdlet Connect-ExchangeOnline

Connect-ExchangeOnline

搜索邮箱 PowerShell 命令有什么作用?

顾名思义,Search-Mailbox PowerShell 命令是 Exchange 管理员在 Exchange 邮箱(或多个邮箱)中搜索特定邮件项目的工具。

术语“邮件项目”涉及任何类型的邮箱项目,例如电子邮件、日历会议、联系人、任务等。

Search-Mailbox PowerShell 命令有四个不同的特殊字符。

1. 搜索结果

关联地,我们可以假设术语“搜索结果”翻译为某种索引,其中列出了所有搜索结果(日志文件等)。 搜索邮箱“搜索结果”的有趣之处在于,“搜索结果”是作为回答我们的搜索查询的原始邮件项目的副本实现的。

例如,如果我们使用 Search-Mailbox PowerShell 命令在 Bob 的邮箱中查找包含特定文本字符串的电子邮件,则 Search-Mailbox PowerShell 命令使我们能够复制答复的邮件项目我们的查询(“搜索结果”)到另一个商店(稍后将讨论的目标邮箱)。

2. 使用搜索邮箱时可以实现的“动作”

正如上一节中提到的,Search-Mailbox PowerShell 命令可以帮助我们查找(搜索)存储在 Exchange 邮箱中的特定邮件项目,并将该邮件项目复制到另一个存储(另一个 Exchange 邮箱)。

可以通过 Search-Mailbox PowerShell 命令实现的附加“操作”是一个非常有趣且强大的操作 - 删除邮件项目(删除“搜索结果”)。

除了名为 New-ComplianceSearchAction 的新 Office 365 PowerShell 命令之外,Search-Mailbox PowerShell 命令是唯一允许 Exchange 管理员“删除”(删除)特定邮件的命令来自 Exchange 邮箱或多个 Exchange 邮箱的项目。

您可以在文章 - 在 Office 365 组织中搜索和删除电子邮件 - 管理员帮助中阅读有关如何使用 PowerShell 命令 New-ComplianceSearchAction 删除邮件项目的更多信息

3. Exchange邮箱“空间”

Search-Mailbox PowerShell 命令使我们能够定义将在其中实施搜索操作的 Exchange 邮箱的特定“位置”。

例如,我们可以指示 Search-Mailbox PowerShell cmdlet 仅在名为“恢复邮件文件夹”(Dumpster)的特殊隐藏邮箱文件夹中执行搜索,该文件夹用作“软删除”和“恢复邮件”的专用存储。硬删除的邮件项目。

4. 搜索查询

Search-Mailbox cmdlet 使我们能够定义用于定义搜索查询的几乎所有可能的参数,例如发件人、收件人、日期、邮件项目的类型、特定文本字符串等等。

此外,我们可以使用非常复杂的搜索查询,它结合了许多不同类型的过滤器,例如 - 仅显示具有特定主题的特定日期的日历项目。

搜索邮箱命令结构

Search-Mailbox cmdlet 由三部分组成:

  • A 部分——在这一部分,我们定义我们想要解决的“对象”。对象是Exchange邮箱
  • B 部分 - 在这一部分中,我们定义需要执行的搜索查询的特定字符。例如,搜索包含特定文本字符串的邮件项目。
  • C 部分 - 在这一部分中,我们定义要应用于从前面部分获得的搜索结果的特定“操作”。

[玩转系统] 使用Search-Mailbox PowerShell 命令- 简介| PowerShell第 1#5 部分

搜索范围

术语“搜索范围”与我们执行搜索时“寻址”的 Exchange 邮箱相关。特定邮箱或定义为“源邮箱”的邮箱。

[玩转系统] 使用Search-Mailbox PowerShell 命令- 简介| PowerShell第 1#5 部分

场景 1 - 搜索邮件 |单一 Exchange 邮箱

在这种情况下,PowerShell命令语法的实现如下:

Search-Mailbox <Source Mailbox> -SearchQuery

场景 2 - 搜索邮件 |多个 Exchange 邮箱

在这种情况下,PowerShell 命令语法是通过“声明”搜索范围来实现的,即要执行搜索任务的 Exchange 邮箱。

然后,我们将 Exchange 邮箱组“通过管道”传递给 Search-Mailbox PowerShell 命令。

我们可以使用许多选项来定义特定的 Exchange 邮箱“组”。

示例 1 - 执行多个邮箱搜索 |以所有类型的 Exchange 邮箱为例,要在所有现有 Exchange 邮箱中执行邮件项目搜索,我们可以使用以下命令语法:

Get-Mailbox -ResultSize Unlimited | Search-Mailbox -SearchQuery

示例 2 - 执行多个邮箱搜索 |所有 Exchange 用户邮箱

Get-Mailbox -Filter '(RecipientTypeDetails -eq "UserMailbox") | Search-Mailbox -SearchQuery

示例 3 - 执行多个邮箱搜索 |所有 Exchange 共享邮箱

Get-Mailbox -Filter '(RecipientTypeDetails -eq "SharedMailbox") | Search-Mailbox -SearchQuery

示例 4 - 执行多个邮箱搜索 |所有交换室邮箱

Get-Mailbox -Filter '(RecipientTypeDetails -eq "RoomMailBox") | Search-Mailbox -SearchQuery

示例 5 - 执行多个邮箱的搜索 | Exchange 邮箱 - 通讯组中的成员

在这种情况下,我们希望通过定义“属于”(成员)特定通讯组的“Exchange 邮箱组”来执行搜索。

Get-DistributionGroupMember <"Distribution Group name"> | Search-Mailbox -SearchQuery

搜索查询(搜索过滤器)

Search-Mailbox PowerShell cmdlet 支持定义搜索查询(搜索过滤器或搜索条件)的非常强大的语法。

搜索查询是通过使用参数 - SearchQuery + 我们要使用的特定过滤器来实现的。

搜索过滤器可以实现为简单的搜索查询,也可以实现为由 KQL 语言编写的高级搜索查询。

[玩转系统] 使用Search-Mailbox PowerShell 命令- 简介| PowerShell第 1#5 部分

示例 1 - 搜索特定类型的邮件

我们可以定义一个搜索过滤器,仅查找特定类型的邮件项目。

例如,

要仅搜索日历项目,我们可以使用以下语法定义搜索查询:

Search-Mailbox <Source Mailbox> -SearchQuery "Kind: meetings"

要仅搜索联系人项目,我们可以使用以下语法定义搜索查询

Search-Mailbox <Source Mailbox> -SearchQuery "Kind: contacts"

示例 2 - 搜索从特定发件人发送或发送给特定收件人的邮件项目

如果我们想通过定义特定发件人或特定收件人来过滤搜索结果,我们可以使用以下语法

搜索特定发件人发送的邮件:

Search-Mailbox <Source Mailbox> -SearchQuery from:"<E-mail address>"

搜索发送给特定收件人的邮件项目:

Search-Mailbox <Source Mailbox> -SearchQuery to:"<E-mail address>"

示例 3 - 查找在特定日期发送的邮件

我们可以执行与邮件项目的“日期”相关的搜索查询。

例如

搜索在特定日期发送的邮件:

Search-Mailbox <Source Mailbox> -SearchQuery sent:mm/dd/yyyy

搜索在特定日期范围内发送的邮件:

Search-Mailbox <Source Mailbox> -SearchQuery {sent:mm/dd/yyyy..mm/dd/yyyy}

示例 4 - 查找带附件的邮件

如果我们查找的信息是带有附件的邮件,我们可以使用以下搜索查询:

搜索包含特定附件(附件文件名)的邮件项目:

Search-Mailbox <Source Mailbox> -SearchQuery attachment:"<Attachment file name>"

搜索包含附件的任何邮件:

Search-Mailbox <Source Mailbox> -SearchQuery {HasAttachment -eq $true}

示例 5 - 查找具有特定文本字符串的邮件

要搜索邮件主题中包含文本字符串的电子邮件,我们可以使用以下语法定义搜索查询。

Search-Mailbox <Source Mailbox> -SearchQuery ‘Subject:"<Text String>"'

要搜索邮件正文中包含文本字符串的电子邮件,我们可以使用以下语法定义搜索查询。

Search-Mailbox <Source Mailbox> -SearchQuery Body:"<Text String>"'

Search-Mailbox cmdlet 和所需的“操作”

我们可以定义 Search-Mailbox PowerShell 命令将执行的三种类型的“操作”:

  1. 创建日志文件 - 如果我们不想获取邮件项目的副本(搜索结果),而只想获取包含邮件项目信息的“报告”(日志),则可以使用此选项被发现的。
  2. 将邮件项目(搜索结果)复制到“另一个”邮箱 - 此选项可用于我们想要恢复或保存搜索结果中出现的邮件项目的情况。
  3. 删除已创建的邮件项目 - 此选项可用于我们想要“销毁”(删除)特定邮件项目的场景。例如,我们的组织受到病毒攻击的场景,我们想要找到所有受感染的邮件并将其删除。

此外,我们可以选择“组合”几个“动作”。例如,我们可以定义一个操作,其中邮件项目将从源邮箱中删除,但除此之外,邮件项目的副本将保存在“目标邮箱”中+创建一个日志文件,其中包含有关每个邮件项目的信息出现在搜索结果中的邮件项目。

[玩转系统] 使用Search-Mailbox PowerShell 命令- 简介| PowerShell第 1#5 部分

“源邮箱”和“目标邮箱”的概念

Search-Mailbox PowerShell cmdlet 的一个重要概念是:

  1. 来源邮箱
  2. 目标邮箱
  3. 目标文件夹

如前所述,大多数情况下,“搜索结果”操作会转换为日志文件,或者转换为在搜索过程中找到的邮件项目的副本

为了能够“存储”“搜索结果”(日志文件或找到的邮件项目),我们需要定义一个“目标存储”含义 - 目标邮箱
此外,我们需要定义一个将要创建的目标文件夹,其中将包含搜索结果。

Search-Mailbox cmdlet 需要“知道” - 什么是源邮箱,什么是目标邮箱(将存储搜索结果)结果)以及目标文件夹的名称是什么。

目标文件夹

鉴于我们提供了目标文件夹名称,搜索邮箱 cmdlet 将在目标邮箱中创建这个新文件夹。

我们用于定义这些“实体”的 PowerShell 语法示例可以是:

Search-Mailbox <Source Mailbox> -TargetMailbox <Target mailbox> -TargetFolder <Target Folder>

[玩转系统] 使用Search-Mailbox PowerShell 命令- 简介| PowerShell第 1#5 部分

目标文件夹命名约定和结构

如前所述,Search-Mailbox cmdlet 在目标邮箱中创建目标文件夹(基于我们作为 PowerShell 命令的一部分提供的目标文件夹名称) 目标文件夹充当搜索结果的“存储”,并具有特定的层次结构。

在下图中,我们可以看到目标文件夹的结构。

[玩转系统] 使用Search-Mailbox PowerShell 命令- 简介| PowerShell第 1#5 部分

目标文件夹提供的名称

这是我们作为 Search-Mailbox 命令强制参数的一部分提供的名称。

邮箱显示名称+当前搜索日期

在目标文件夹的名称下,Search-Mailbox cmdlet 创建以下层次结构:

源邮箱“显示名称”+当前搜索时间

存储搜索结果的“文件夹名称”是由源邮箱显示名称+当前搜索时间的组合构建的。

请注意,作为文件夹名称一部分出现的“时间”被视为“GMT +0”。

这意味着在大多数情况下,作为文件夹名称一部分显示的搜索结果“时间”与您当前的本地时间不同。

如果您想将时间调整为当地时区,则需要根据当地 GMT 增加或减少小时数。

例如,我的时区是 GMT+3

在下面的屏幕截图中,我们可以看到提到的时间是 10:13
在我的场景中,“实时”是 13:13(10:13 + 3 小时)。

[玩转系统] 使用Search-Mailbox PowerShell 命令- 简介| PowerShell第 1#5 部分

文件夹名称 - 主邮箱

搜索邮箱 cmdlet 创建一个名为 - 主邮箱的文件夹。

该术语与“标准用户邮箱”相关,定义为 - 主邮箱。

Search-Mailbox cmdlet 唯一引用标准邮箱的原因是,理论上,Exchange 用户可以拥有附加邮箱或辅助邮箱(称为存档邮箱)。

在主邮箱下,我们可以找到搜索结果(源邮箱中原始邮件的副本)。 Search-Mailbox cmdlet 将保留“源邮箱”中显示的相同文件夹层次结构。

可回收物品

如前所述,Search-Mailbox cmdlet 最强大的功能之一是搜索和“导出”(复制)存储在恢复邮件文件夹 (Dumpster) 中的邮件项目的能力。

如果搜索结果包含存储在恢复邮件文件夹 (Dumpster) 中的邮件项目,则会创建一个名为 - 可恢复项目的新文件夹。

注意 - 邮箱所有者无法看到恢复邮件文件夹 (Dumpster),因为这是一个隐藏文件夹。只有执行搜索的 Exchange 管理员才具有查看此文件夹以及作为存储在目标邮箱(目标文件夹中)搜索结果一部分的文件夹内容的“权限”。

文件夹名称 - 存档邮箱

此文件夹名称仅在源邮箱具有存档(附加邮箱)的情况下“出现”。

在这种情况下,Search-Mailbox cmdlet 将存储在源邮箱存档中找到的搜索结果

源邮箱“空间”或“范围”

在本节中,我想简要回顾一下 Search-Mailbox cmdlet 与源邮箱“空间”的关联方式。

Search-Mailbox cmdlet 定义 Exchange 邮箱“空间”。

  1. 主邮箱空间。
  2. 恢复邮件文件夹 (Dumpster) 空间。
  3. 存档邮箱空间。

[玩转系统] 使用Search-Mailbox PowerShell 命令- 简介| PowerShell第 1#5 部分

默认情况下,Search-Mailbox cmdlet 将在上述所有三个部分中查找(搜索)邮件项目。

在某些情况下,我们需要指示 Search-Mailbox cmdlet“忽略”这些“空间”之一或仅“集中”在特定“空间”中。

示例 1 - 仅在恢复邮件文件夹中执行搜索 (SearchDumpsterOnly)

例如,我们需要恢复用户软删除或硬删除的邮件项目的场景。在本例中,我们要定义一个非常具体的邮箱范围 - 恢复邮件文件夹 (Dumpster)。

要将搜索范围限制为仅存储在恢复邮件文件夹(也定义为垃圾箱)中的邮件项目,我们可以使用以下语法:

Search-Mailbox <Source Mailbox> -SearchDumpsterOnly

示例 2 - 仅在恢复邮件文件夹中执行搜索 (SearchDumpsterOnly)

在本例中,我们想要执行邮箱搜索,但我们不希望搜索在源邮箱的恢复邮件文件夹 (Dumpster) 上运行。

要从搜索结果中排除恢复邮件文件夹(Dumpster),我们可以使用参数SearchDumpster:$False

例如:

Search-Mailbox <Source Mailbox> -SearchDumpster:$false

如果您想了解有关“恢复邮件文件夹”的更多信息,您可以阅读文章 - 在 Exchange Online 环境中恢复已删除的邮件项目 |单品回收| 2#7

示例 3 - 仅在主邮箱中执行搜索

如果用户有存档邮箱,并且我们希望从搜索过程中排除存档邮箱,则可以使用该参数 DoNotIncludeArchive

例如:

Search-Mailbox <Source Mailbox> -DoNotIncludeArchive

搜索邮箱 cmdlet 和所需的权限

使用Search-Mailbox cmdlet“窥探”Exchange 邮箱需要特殊权限,因为从“数据隐私的角度”来看,我们正在查看私人用户数据。如果我们使用Search-Mailbox cmdlet 来删除邮件项目,我们将删除私人用户数据。

要通过 PowerShell 将角色直接分配给用户,请运行以下 PowerShell 命令:

New-ManagementRoleAssignment -Role "Mailbox Import Export" -User "<user name or alias>"
New-ManagementRoleAssignment -Role "Mailbox Search" -User "<user name or alias>"

搜索邮箱 cmdlet 和限制

Search-Mailbox cmdlet 有两个我们应该了解的限制。

1. 最大“源邮箱”。
Search-Mailbox cmdlet 可以对最多 10,000 个邮箱执行多个邮箱搜索。

2. 使用搜索查询时的最大搜索结果
当我们使用 Search-Mailbox cmdlet + 搜索查询时,即使用 -SearchQuery 参数,结果为最多限制 10,000 个结果。

当我们运行 Ssearch-Mailbox cmdlet 时,会出现以下警告:

警告:如果指定了搜索查询,Search-Mailbox cmdlet 最多可为每个邮箱返回 10000 个结果。要返回超过 10000 个结果,请使用 New-MailboxSearch cmdlet 或 Exchange 管理中心中的就地电子数据展示和保留控制台。

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

取消回复欢迎 发表评论:

关灯