概览
企业系统管理员登录到 Exchange 服务器,通过 EMS 命令窗口进行搜索目标邮件并执行删除。
赋权
1. 将执行操作的账户 hexingxing 添加至 Discovery Management 权限组;
2. 确保执行用户拥有 Mailbox Search 权限,以运行 Mailbox Search 命令:
New-ManagementRoleAssignment –Role "Mailbox Search" –User hexingxing
3. 确保执行用户拥有 Mailbox Import Export 权限,以执行 DeleteContent 操作:
New-ManagementRoleAssignment –Role "Mailbox Import Export" –User hexingxing
4. 重新启动 Exchange Management Shell(EMS)窗口。
5. 检查命令 Search-Mailbox 是否支持参数 DeleteContent:
Get-Command Search-Mailbox -Syntax
Search-Mailbox [[-PipelineVariable] <Object>] [[-TargetFolder] <Object>] [[-OutVariable] <Object>] [[-WarningAction] <O
bject>] [[-LogLevel] <Object>] [[-SearchQuery] <Object>] [[-OutBuffer] <Object>] [[-ErrorVariable] <Object>] [[-Identit
y] <Object>] [[-ErrorAction] <Object>] [[-WarningVariable] <Object>] [[-DomainController] <Object>] [[-TargetMailbox] <
Object>] [-SearchDumpster] [-WhatIf] [-LogOnly] [-IncludeUnsearchableItems] [-EstimateResultOnly] [-SearchDumpsterOnly]
[-DoNotIncludeArchive] [-Confirm] [-DeleteContent] [-Force] [-AsJob] [-Verbose] [-Debug]
使用 Get-ComplianceSearch(exch2019)命令时,
请将执行操作的账户 hexingxing 添加至 Compliance Management 权限组,本文未使用该命令。
搜索
关键参数 EstimateResultOnly
'Subject:"邮件标题"'
中的 “邮件标题” 内容改为实际需要搜索的内容,只要包含该值即被命中。
$targetMailboxes = Get-Content "C:\logs\hexingxing\list.txt"
foreach ($mailbox in $targetMailboxes) {
$result = Search-Mailbox -Identity $mailbox -SearchQuery 'Subject:" 邮件标题"' -EstimateResultOnly
if ($result.ResultItemsCount -gt 0) {
$log = " 邮箱: $mailbox 命中: $($result.ResultItemsCount),大小: $($result.ResultItemsSize)"
$log | Out-File -Append -FilePath "C:\logs\hexingxing\SearchResult_list.txt"
}
}
要点
执行命令前请在 C:\logs\hexingxing\list.txt 文件中录入并保存目标账号清单表
hxx@hxx.tt
hyy@hxx.tt
htt@hxx.tt
hff@hxx.tt
hss@hxx.tt
hkk@hxx.tt
hbb@hxx.tt
hnn@hxx.tt
执行命令后将在 C:\logs\hexingxing\SearchResult_list.txt 文件中获取如下结果
邮箱: hxx@hxx.tt 命中: 1,大小: 2.225 MB (2,332,694 bytes)
邮箱: hyy@hxx.tt 命中: 1,大小: 2.225 MB (2,332,678 bytes)
邮箱: htt@hxx.tt 命中: 1,大小: 2.225 MB (2,332,692 bytes)
邮箱: hff@hxx.tt 命中: 1,大小: 2.225 MB (2,332,708 bytes)
邮箱: hss@hxx.tt 命中: 1,大小: 2.225 MB (2,332,700 bytes)
邮箱: hkk@hxx.tt 命中: 1,大小: 2.225 MB (2,332,684 bytes)
邮箱: hbb@hxx.tt 命中: 1,大小: 2.225 MB (2,332,692 bytes)
邮箱: hnn@hxx.tt 命中: 1,大小: 2.225 MB (2,332,700 bytes)
删除
关键参数 DeleteContent
通过搜索命令确认命中的邮箱和邮件标题内容,那么可以在此基础上执行删除操作。
接下来将上述的基础命令衔接过来进行删除操作。
'Subject:"邮件标题"'
中的 “邮件标题” 内容改为实际需要搜索的内容,只要包含该值即被命中。
$targetMailboxes = Get-Content "C:\logs\hexingxing\list.txt"
foreach ($mailbox in $targetMailboxes) {
try {
$result = Search-Mailbox -Identity $mailbox -SearchQuery 'Subject:" 邮件标题"' -DeleteContent -Force
$log = " 已删除: $mailbox 命中数量: $($result.ResultItemsCount),大小: $($result.ResultItemsSize)"
$log | Out-File -Append -FilePath "C:\logs\hexingxing\finalDeleteResult_list.txt"
}
catch {
$errorLog = " 删除失败: $mailbox 错误: $_"
$errorLog | Out-File -Append -FilePath "C:\logs\hexingxing\finalDeleteResultErr_list.txt"
}
}
执行命令前请在 C:\logs\hexingxing\list.txt 文件中录入并保存目标账号清单表
请务必使用直接套用前述已完成搜索的源数据文件
hxx@hxx.tt
hyy@hxx.tt
htt@hxx.tt
hff@hxx.tt
hss@hxx.tt
hkk@hxx.tt
hbb@hxx.tt
hnn@hxx.tt
执行命令后将在 C:\logs\hexingxing\finalDeleteResult_list.txt 文件中获取如下结果
已删除: hxx@hotwind.net 命中数量: 1,大小: 2.225 MB (2,332,694 bytes)
已删除: hyy@hotwind.net 命中数量: 1,大小: 2.225 MB (2,332,678 bytes)
已删除: htt@hotwind.net 命中数量: 1,大小: 2.225 MB (2,332,692 bytes)
已删除: hff@hotwind.net 命中数量: 1,大小: 2.225 MB (2,332,708 bytes)
已删除: hss@hotwind.net 命中数量: 1,大小: 2.225 MB (2,332,700 bytes)
已删除: hkk@hotwind.net 命中数量: 1,大小: 2.225 MB (2,332,684 bytes)
已删除: hbb@hotwind.net 命中数量: 1,大小: 2.225 MB (2,332,692 bytes)
已删除: hnn@hotwind.net 命中数量: 1,大小: 2.225 MB (2,332,700 bytes)
如果执行发生错误 C:\logs\hexingxing\finalDeleteResultErr_list.txt 文件中将记录具体明细,查找并更正后重新执行删除操作。
注意
- 确保当前 PowerShell 会话的用户拥有
Discovery Management
权限和Mailbox Search
、Mailbox Import Export
角色。 - 建议先测试一两个邮箱,确认无误后再扩展执行。
- 删除是不可逆的,请谨慎执行。
0 条评论