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

[玩转系统] 使用 PowerShell 从单个 Exchange 邮箱中删除邮件项目 |第 5 部分#5

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

使用 PowerShell 从单个 Exchange 邮箱中删除邮件项目 |第 5 部分#5


在本文中,我们回顾了使用 Search-Mailbox cmdlet 从单个 Exchange 邮箱删除邮件项目(批量删除)的各种方案。

连接到 Exchange Online PowerShell

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

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

Connect-ExchangeOnline

在运行我们在本文中介绍的 PowerShell 命令之前,我们必须强烈强调,您应该小心使用 Search-Mailbox PowerShell cmdlet,因为这些 cmdlet 会执行邮件项目的硬删除。

您应该有充分的理由使用此选项,我们建议您熟悉 PowerShell 语法并了解您使用的确切搜索查询。例如,已删除的邮件会发生什么情况、哪些 Exchange 邮箱会受到影响等等。

与邮件项目删除相关的 Search-Mailbox cmdlet 的逻辑

鉴于我们决定必须使用 Search-Mailbox cmdlet 来删除邮件项目,我们可以选择两种主要方案:

选项 1 - 从源邮箱中删除邮件项目,而不保存已删除邮件项目的副本。

在这种情况下,我们希望从源邮箱删除特定邮件项目(回答我们的过滤器范围搜索查询的邮件项目)而不保存这些删除的任何副本邮件物品。

在本例中,我们使用 PowerShell 命令语法而不提供有关目标邮箱 + 目标文件夹的信息。

PowerShell 命令语法的示例如下:

Search-Mailbox "Source Mailbox" -DeleteContent -Force

选项 2 - 从源邮箱删除邮件 + 保存已删除邮件的副本

在这种情况下,我们希望从源邮箱删除特定邮件项目(回答我们的过滤器范围搜索查询的邮件项目),但将已删除邮件项目的副本保存在目标邮箱(在目标文件夹中)

在本例中,我们使用 PowerShell 命令语法 + 提供有关目标邮箱 + 目标文件夹的信息。

PowerShell 命令语法的示例如下:

Search-Mailbox "Source Mailbox" -TargetMailbox "Target mailbox" -TargetFolder "Target Folder" -DeleteContent -Force

选项 3 - 执行搜索 - 找到我们要从源邮箱中删除的邮件项目 + 生成报告(日志)

在这种情况下,我们希望生成一个报告(日志文件),其中包含有关我们“要删除但除了生成报告之外不执行任何”操作”的邮件项目的详细信息。

要仅生成报告而不执行任何操作,我们使用 PowerShell 参数 -LogOnly

我的建议是在开始实际删除之前考虑使用此选项。换句话说,安全总比后悔好!

当我们查看报告(日志)上显示的信息并“批准”删除特定邮件项目后,返回并使用上述选项之一(删除邮件项目而不保存副本或保存目标邮箱中已删除邮件的副本)。

在本例中,我们使用 PowerShell 命令语法 + 提供有关目标邮箱的信息 + 将“存储”报告文件的目标文件夹

PowerShell 命令语法的示例如下:

Search-Mailbox "Source Mailbox" -TargetMailbox "Target mailbox" -TargetFolder "Target Folder" -LogOnly

[玩转系统] 使用 PowerShell 从单个 Exchange 邮箱中删除邮件项目 |第 5 部分#5

场景描述

在下面的例子中,我更倾向于安全起见。因此,所有 PowerShell 命令示例都将基于我们在“目标邮箱”中保存已删除邮件项目的副本的场景。如果您不想使用此选项,可以从 PowerShell 命令语法中删除有关“目标邮箱”+“目标文件夹”的部分。

目标

我们寻求实现的目标是:

  1. 在特定 Exchange 邮箱(BobMailbox)中执行搜索。搜索是通过定义特定的搜索查询(搜索条件)来实现的,这将帮助我们找到回答搜索查询的特定邮件项目。
  2. 我们希望删除搜索结果中出现的所有邮件项目。
  3. 搜索结果将被复制到目标邮箱,并保存在专用文件夹(目标文件夹)中。
  4. 此外,我们想要创建一个详细的报告(日志),关于出现在搜索结果中并且被删除的每个邮件项目(日志\报告文件将保存在目标文件夹)。

源邮箱+目标邮箱(和目标文件夹)

  • 源邮箱(我们执行搜索的邮箱)是Bob的邮箱
  • 我们用于存储搜索结果(邮件项)的目标邮箱Adele的
  • 目标文件夹名称将为 - 搜索结果 Bob -Backup - 已删除的邮件项目。

[玩转系统] 使用 PowerShell 从单个 Exchange 邮箱中删除邮件项目 |第 5 部分#5

邮箱搜索范围

默认情况下,搜索邮箱 cmdlet 在包含以下“邮箱空间”的源邮箱中执行搜索:

主邮箱

  1. 搜索邮箱 cmdlet 将执行与主邮箱中的所有文件夹和子文件夹相关的搜索。
  2. 恢复邮件文件夹 - 默认情况下,Search-Mailbox cmdlet 还将搜索存储在恢复邮件文件夹(转储程序)中的邮件项目。

存档邮箱

如果源邮箱有存档邮箱:

  1. 搜索邮箱 cmdlet 将执行与存档邮箱中的所有文件夹和子文件夹相关的搜索。
  2. 恢复邮件文件夹 - 默认情况下,Search-Mailbox cmdlet 还将搜索存储在邮箱存档恢复邮件文件夹(转储程序)中的邮件项目。

[玩转系统] 使用 PowerShell 从单个 Exchange 邮箱中删除邮件项目 |第 5 部分#5

使用搜索邮箱删除邮件项目 | PowerShell 参数

使用 Search-Mailbox cmdlet 删除邮件项目的“活动”选项我们需要添加以下 PowerShell 命令参数:

1.删除内容

此“DeleteContent”参数指示Search-Mailbox cmdlet“搜索并销毁”与搜索查询条件匹配的邮件项目。

2.力量

这个“Force”参数不是强制参数。此参数的目的是防止 Search-Mailbox cmdlet 要求我们确认要删除的每个邮件项目。

在下图中,我们可以看到附加参数,这些参数将 Search-Mailbox cmdlet 从搜索和定位信息(邮件项目)的工具“转变”为销毁(硬删除)邮件的致命武器项目!

使用搜索邮箱执行搜索

搜索并删除邮件+保存邮件副本 |从恢复邮件文件夹(垃圾箱)中删除邮件项目

在此示例中,我们使用 Search-Mailbox cmdlet,不带任何“过滤器”或搜索查询过滤器。

相反,我们使用 PowerShell 参数 SearchDumpsterOnly 将搜索(和删除邮件项目)限制为仅存储在恢复邮件文件夹(转储程序)中的邮件项目。

在这种情况下,我们的目标是删除存储在恢复邮件文件夹(垃圾箱)中的所有软删除邮件项目+将从源邮箱删除的所有邮件项目保存到目标邮箱的副本。

如前所述,Search-Mailbox cmdlet 无法删除存储在 Purges 子文件夹(恢复邮件文件夹的子文件夹)中的硬删除邮件项目

搜索并删除邮件 + 保存邮件副本 |邮箱搜索范围恢复邮件文件夹(垃圾箱)

PowerShell命令语法:

Search-Mailbox "Source Mailbox" -SearchDumpsterOnly -TargetMailbox "Destination mailbox" -TargetFolder "Folder" -DeleteContent -Force -LogLevel Full

PowerShell 命令示例:

Search-Mailbox "Bob" -SearchDumpsterOnly -TargetMailbox "Adele" -TargetFolder "Search Results - Bob" -DeleteContent -Force -LogLevel Full

搜索并删除邮件 + 保存邮件副本 |搜索查询过滤器 - 邮件项目的特定类型

在这种情况下,我们想要:

  • 仅查看(搜索)单个源邮箱中特定类型的邮件项目(例如日历或联系人邮件项目)。
  • 删除这些邮件项目。
  • 将已删除邮件的副本保存在目标邮箱中。

搜索 + 保存邮件副本 |搜索查询过滤器 - 日历项目

搜索+删除特定类型的邮件项目 - 日历 项目。

PowerShell命令语法:

Search-Mailbox "Source Mailbox" -SearchQuery "Kind:meetings" -TargetMailbox "Destination mailbox" -TargetFolder "Folder" -DeleteContent -Force -LogLevel Full

PowerShell 命令示例:

Search-Mailbox "Bob" -SearchQuery "Kind:meetings" -TargetMailbox "Adele" -TargetFolder "Search Results - Bob" -DeleteContent -Force -LogLevel Full

搜索 + 保存邮件副本 |搜索查询 - 联系项目

搜索 + 删除特定类型的邮件项目 - 联系人 项目

PowerShell命令语法:

Search-Mailbox "Source Mailbox" -SearchQuery "Kind:contacts" -TargetMailbox "Destination mailbox" -TargetFolder "Folder" -DeleteContent -Force -LogLevel Full

PowerShell 命令示例:

Search-Mailbox "Bob" -SearchQuery "Kind:contacts" -TargetMailbox "Adele" -TargetFolder "Search Results - Bob" -DeleteContent -Force -LogLevel Full

注意: 默认情况下,如果未指定,Search-Mailbox cmdlet 将查找所有类型的邮件类型。

使用 kind 搜索过滤器选项时,有效值可以是以下一项或多项:

  • 电子邮件
  • 会议
  • 任务
  • 笔记
  • 文档
  • 期刊
  • 联系方式
  • 我是

搜索并删除邮件 + 保存邮件副本 |搜索查询过滤器 - 文本字符串

在本节中,我们使用搜索查询来查找包含特定文本字符串的邮件项目。

一般注意事项 - 因为我们使用引号,所以搜索将仅获取出现我们定义的文本字符串中所有单词的结果。

例如,在我们的场景中,我们查找文本字符串:“纽约的会议。”
包含单词“纽约”或“会议”不会出现在搜索结果中。

只有包含出现在引号内的所有文本短语的邮件项目才会被视为回答搜索查询的“有效邮件项目”(其中的确切短语或关键字)项目的主题)。

搜索并删除邮件 + 保存邮件副本 |搜索查询 - 邮件主题中带有文本字符串的邮件项目

搜索 + 删除带有出现在电子邮件主题行中的特定文本字符串的邮件项目。

PowerShell命令语法:

Search-Mailbox "Source Mailbox" -SearchQuery Subject:"Text String" -TargetMailbox "Destination mailbox" -TargetFolder "Folder" -LogLevel Full

PowerShell 命令示例:

Search-Mailbox "Bob" -SearchQuery Subject:"A meeting in New York" -TargetMailbox "Adele" -TargetFolder "Search Results - Bob" -DeleteContent -Force -LogLevel Full

搜索并删除邮件 + 保存邮件副本 |搜索查询 - 邮件正文中带有文本字符串的邮件项目

搜索+删除带有出现在电子邮件 正文 中的特定文本字符串的邮件项目。

PowerShell命令语法:

Search-Mailbox "Source Mailbox" -SearchQuery body:"Text String" -TargetMailbox "Destination mailbox" -TargetFolder "Folder" -DeleteContent -Force -LogLevel Full

PowerShell 命令示例:

Search-Mailbox "Bob" -SearchQuery Subject:"A meeting in New York" -TargetMailbox "Adele" -TargetFolder "Search Results - Bob" -DeleteContent -Force -LogLevel Full

搜索并删除邮件 + 保存邮件副本 |搜索查询 - 邮件正文或邮件主题中带有文本字符串的邮件项目

搜索 + 删除电子邮件中出现的具有特定文本字符串的邮件项目 主题行邮件主题

PowerShell命令语法:

Search-Mailbox "Source Mailbox" -SearchQuery "Text String" -TargetMailbox "Destination mailbox" -TargetFolder "Folder" -DeleteContent -Force -LogLevel Full

PowerShell 命令示例:

Search-Mailbox "Bob" -SearchQuery "A meeting in New York" -TargetMailbox "Adele" -TargetFolder "Search Results - Bob" -DeleteContent -Force -LogLevel Full

我们可以用来执行包含两种类型的搜索条件的搜索的其他 PowerShell 命令语法是:

Search-Mailbox "Bob" -SearchQuery {Subject:"A meeting in New York" OR body:"A meeting in New York"} -TargetMailbox "Adele" -TargetFolder "Search Results - Bob" -DeleteContent -Force -LogLevel Full

搜索并删除邮件 + 保存邮件副本 |搜索查询过滤器 - 特定日期或日期范围

有关“日期和日期格式”主题的一般信息。

我们在搜索邮箱查询中使用的日期格式有点棘手,因为日期格式受 Windows 操作系统日期格式、Exchange Online 邮箱日期格式等的影响。

情况 1:大多数情况下,您需要在搜索查询中使用的日期格式是 Windows 操作系统日期格式。

情况 2:搜索邮箱中使用日期格式时,查询的格式需要符合 Exchange 服务器的区域设置。

如果您收到诸如“KQL 解析器抛出异常”之类的错误,请使用“月份名称”而不是“月份编号”的格式。

例如,不要使用日期格式 - 07/21/2017,而是使用以下格式 - 02/July/2017。

搜索并删除邮件 + 保存邮件副本 |搜索查询 - 在特定日期发送的电子邮件

搜索并删除在特定日期发送的邮件项目。

PowerShell命令语法:

Search-Mailbox "Source Mailbox" -SearchQuery sent:mm/dd/yyyy -TargetMailbox "Destination mailbox" -TargetFolder "Target Folder" -DeleteContent -Force -LogLevel Full

PowerShell 命令示例:

Search-Mailbox "Bob" -SearchQuery sent:21/07/2017 -TargetMailbox "Adele -TargetFolder "Search Results - Bob" -DeleteContent -Force -LogLevel Full

搜索并删除邮件 + 保存邮件副本 |搜索查询 - 在特定日期范围内发送的电子邮件

搜索并删除特定日期范围发送的邮件项目。

PowerShell命令语法:

Search-Mailbox "Source Mailbox" -SearchQuery {sent:mm/dd/yyyy..mm/dd/yyyy} -TargetMailbox "Target mailbox" -TargetFolder "Target Folder" -DeleteContent -Force -LogLevel Full

PowerShell 命令示例:

Search-Mailbox "Bob" -SearchQuery {sent:21/06/2017..07/21/2017} -TargetMailbox "Adele" -TargetFolder "Search Results - Bob" -DeleteContent -Force -LogLevel Full

搜索并删除邮件 + 保存邮件副本 |搜索查询 - 在特定日期范围内收到的电子邮件

搜索 + 删除在特定日期范围收到的邮件项目。

PowerShell命令语法:

Search-Mailbox "Source Mailbox" -SearchQuery {Received:mm/dd/yyyy..mm/dd/yyyy} -TargetMailbox "Target mailbox" -TargetFolder "Target Folder" -DeleteContent -Force -LogLevel Full

PowerShell 命令示例:

Search-Mailbox "Bob" -SearchQuery {Received:21/06/2017..21/07/2017} -TargetMailbox "Adele" -TargetFolder "Search Results - Bob" -DeleteContent -Force -LogLevel Full

搜索并删除邮件 + 保存邮件副本 |搜索查询 - 在特定日期发送的电子邮件 + 在特定日期接收的电子邮件

搜索 + 删除在 具体日期范围

PowerShell命令语法:

Search-Mailbox "Source Mailbox" -SearchQuery {sent:mm/dd/yyyy OR Received: mm/dd/yyyy} -TargetMailbox "Destination mailbox" -TargetFolder "Target Folder" -DeleteContent -Force -LogLevel Full

PowerShell 命令示例:

Search-Mailbox "Bob" -SearchQuery {sent:30/07/2017 OR Received:30/07/2017}-TargetMailbox "Adele" -TargetFolder "Search Results - Bob" -DeleteContent -Force -LogLevel Full

搜索并删除邮件 + 保存邮件副本 |搜索查询过滤器 - 发件人或收件人

在本节中,我们要搜索+删除从特定发件人发送或到达特定收件人的邮件项目。

搜索并删除邮件 + 保存邮件副本 |过滤范围 - 由特定发件人发送的电子邮件

搜索 + 删除从特定发送的特定发件人(FROM 邮件)的邮件项目场地)。

PowerShell命令语法:

Search-Mailbox "Source Mailbox" -SearchQuery from:"E-mail address" -TargetMailbox "Target mailbox" -TargetFolder "Target Folder" -LogLevel Full

PowerShell 命令示例:

Search-Mailbox "Bob" -SearchQuery from:"[email protected]" -TargetMailbox "Adele" -TargetFolder "Search Results - Bob" -DeleteContent -Force -LogLevel Full

搜索并删除邮件 + 保存邮件副本 |过滤范围 - 发送给特定收件人的电子邮件

搜索 + 删除从特定收件人收到的邮件项目(发送到特定收件人 - 收件人邮件字段)。

PowerShell命令语法:

Search-Mailbox "Source Mailbox" -SearchQuery to:"E-mail address" -TargetMailbox "Target mailbox" -TargetFolder "Target Folder" -DeleteContent -Force -LogLevel Full

PowerShell 命令示例:

Search-Mailbox "Bob" -SearchQuery to:"[email protected]" -TargetMailbox "Adele" -TargetFolder "Search Results - Bob" -DeleteContent -Force -LogLevel Full

搜索并删除邮件 + 保存邮件副本 |搜索查询过滤器 - 电子邮件附件

在本节中,我们要搜索+删除带有附件的邮件项目。

搜索并删除邮件 + 保存邮件副本 |过滤范围 - 包含特定附件文件名的电子邮件

搜索 + 删除包含带有特定文件扩展名的附件的邮件项目。

PowerShell命令语法:

Search-Mailbox "Source Mailbox" -SearchQuery attachment:"Attachment file name" -TargetMailbox "Target mailbox" -TargetFolder "Target Folder" -DeleteContent -Force -LogLevel Full

PowerShell 命令示例:

Search-Mailbox "Bob" -SearchQuery attachment:"Customer.pdf" -TargetMailbox "Adele" -TargetFolder "Search Results - Bob" -DeleteContent -Force -LogLevel Full

搜索并删除邮件 + 保存邮件副本 |过滤范围 - 特定附件类型(后缀)

搜索 + 删除附件带有特定文件名后缀的邮件项目。

PowerShell命令语法:

Search-Mailbox "Source Mailbox" -SearchQuery {Attachment -like "*.suffix"} -TargetMailbox "Target mailbox" -TargetFolder "Target Folder" -DeleteContent -Force -LogLevel Full

PowerShell 命令示例:

Search-Mailbox "Bob" -SearchQuery {Attachment -like "*.PDF"} -TargetMailbox "Adele" -TargetFolder "Search Results - Bob" -DeleteContent -Force -LogLevel Full

搜索并删除邮件 + 保存邮件副本 |过滤范围 - 带附件的电子邮件

搜索 + 删除带有附件的邮件项目。

PowerShell命令语法:

Search-Mailbox "Source Mailbox" -SearchQuery {HasAttachment -eq $true} -TargetMailbox "Target mailbox" -TargetFolder "Target Folder" -DeleteContent -Force -LogLevel Full

PowerShell 命令示例:

Search-Mailbox "Bob" -SearchQuery -SearchQuery {HasAttachment -eq $true} -TargetMailbox "Adele" -TargetFolder "Search Results - Bob" -DeleteContent -Force -LogLevel Full

搜索并删除邮件 + 保存邮件副本 |搜索查询过滤器 - 附加搜索查询

搜索+删除邮件项目,其尺寸比特定尺寸“更大”(更大)。

搜索并删除邮件 + 保存邮件副本 |过滤范围 - 电子邮件项目大小大于 X MB

PowerShell命令语法:

Search-Mailbox "Source Mailbox" -SearchQuery {Size -gt <size in KB or MB>} -TargetMailbox "Target mailbox" -TargetFolder "Target Folder" -LogLevel Full

PowerShell 命令示例:

Search-Mailbox "Bob" -SearchQuery -SearchQuery {Size -gt 5MB} -TargetMailbox "Adele" -TargetFolder "Search Results - Bob" -DeleteContent -Force -LogLevel Full

搜索邮箱|邮箱搜索范围|恢复邮件文件夹(垃圾箱)和存档邮箱

在下面的部分中,我想简要回顾一下“邮箱搜索范围”的主题。

如前所述,Search-Mailbox cmdlet 默认情况下将在以下所有邮箱位置执行搜索:

  1. 主邮箱
  2. 主邮箱 - 恢复邮件文件夹(垃圾箱)
  3. 存档邮箱
  4. 存档邮箱 - 恢复邮件文件夹(垃圾箱)

Search-Mailbox cmdlet 使我们能够定义特定的邮箱搜索范围或从搜索结果中排除特定的邮箱范围。

邮箱范围 恢复邮件文件夹(垃圾箱)

Search-Mailbox cmdlet 最显着的优点之一是它能够为 Exchange 管理员提供查看(搜索)恢复邮件文件夹(转储程序)的内容并“获取”副本的能力存储在恢复邮件文件夹中的软删除 + 硬删除邮件项目。

默认情况下,搜索邮箱 cmdlet 将在主邮箱和恢复邮件文件夹(转储程序)中执行搜索。

例如,如果我们没有定义特定的邮箱范围过滤器,搜索任务将包括主邮箱空间+恢复邮件文件夹(垃圾箱)。

Search-Mailbox "Source Mailbox" -TargetMailbox "Target mailbox" -TargetFolder "Target Folder" -LogLevel Full

排除恢复邮件文件夹(转储程序)搜索

如果我们想从搜索中排除恢复邮件文件夹(Dumpster),我们可以使用参数 SearchDumpster 并将开关设置为 $False,例如 -SearchDumpster:$false

Search-Mailbox "Source Mailbox" -TargetMailbox "Target mailbox" -TargetFolder "Target Folder" -SearchDumpster:$false -LogLevel Full

仅搜索垃圾箱

如果我们只想在恢复邮件文件夹(Dumpster)中执行搜索,我们可以使用参数-SearchDumpsterOnly,它指定仅搜索指定邮箱的可恢复项目文件夹。

Search-Mailbox "Source Mailbox" -TargetMailbox "Target mailbox" -TargetFolder "Target Folder" -SearchDumpsterOnly -LogLevel Full

归档邮箱范围

默认情况下,如果特定 Exchange 邮箱有存档,则始终搜索该存档。

要从搜索中排除存档,请使用 DoNotIncludeArchive 参数。

Search-Mailbox "Source Mailbox" -TargetMailbox "Target mailbox" -TargetFolder "Target Folder" -DoNotIncludeArchive -LogLevel Full

编写高级/组合搜索过滤器

我想简要提及的另一部分是定义结合两个或多个“过滤器”或搜索条件的更高级或更复杂的搜索查询的主题。

要定义两个或多个过滤器,我们可以使用“OR”、“AND”等逻辑运算符。

在下图中,我们可以看到用于定义更高级搜索查询的语法的一些示例。

[玩转系统] 使用 PowerShell 从单个 Exchange 邮箱中删除邮件项目 |第 5 部分#5

示例1

查找满足以下搜索条件的所有邮件项目:

带有附件+的邮件项目,此外,邮件主题为“Test”。

Get-Mailbox -ResultSize Unlimited | Search-Mailbox -SearchQuery {HasAttachment -eq $true and subject:Test} -TargetMailbox "Target mailbox" -TargetFolder "Target Folder"

示例2

查找满足以下搜索条件的所有邮件项目:

邮件日历中的邮件项目。

Get-Mailbox -ResultSize Unlimited | Search-Mailbox -SearchQuery {kind:email OR kind:meetings} -TargetMailbox "Target mailbox" -TargetFolder "Target Folder"

示例3

查找满足以下搜索条件的所有邮件项目:

主题为“Test”的邮件+从[email protected]发送+在特定日期30/07/2017发送。

Get-Mailbox -ResultSize Unlimited | Search-Mailbox -SearchQuery {Subject:"Test" AND From:"[email protected]" AND Sent:"30/07/2017"} -TargetMailbox "Target mailbox" -TargetFolder "Target Folder"

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

取消回复欢迎 发表评论:

关灯