You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell删除Exchange钓鱼邮件脚本如何等待合规搜索完成后执行Purge

解决方案

Start-ComplianceSearch为异步执行命令,触发搜索任务后会立即返回,不会等待任务实际执行完成,因此直接执行后续的Purge操作会因任务未完成报错。你可以添加轮询等待逻辑,校验搜索任务状态为完成后再执行删除操作。


调整后完整脚本

Import-Module ExchangeOnlineManagement
Connect-IPPSSession -UserPrincipalName xxxxxxxxxx@xxxx.com
        
New-ComplianceSearch -Name Test1 `
-ExchangeLocation All `
-ContentMatchQuery 'subject:"Informational-severity alert: eDiscovery search started or exported" AND sent:08/31/2021'
        
Start-ComplianceSearch -Identity Test1

# 新增等待合规搜索执行完成的轮询逻辑
do {
    # 每次间隔15秒查询一次状态,可根据搜索范围调整间隔时长
    Start-Sleep -Seconds 15
    $currentSearch = Get-ComplianceSearch -Identity Test1
    $searchStatus = $currentSearch.Status
    Write-Host "当前搜索状态:$searchStatus,已匹配邮件数量:$($currentSearch.Items)"
} while ($searchStatus -notin @('Completed', 'Failed'))

# 仅搜索成功完成时执行删除操作
if ($searchStatus -eq 'Completed') {
    Write-Host "合规搜索完成,开始执行邮件删除"
    New-ComplianceSearchAction -Searchname Test1 -Purge -PurgeType Softdelete
}
else {
    Write-Error "合规搜索执行失败,请检查搜索条件、账号权限后重试"
}

关键逻辑说明

  • 轮询逻辑通过do...while循环实现,每次等待15秒后拉取一次任务状态,避免频繁调用接口触发平台限流
  • 增加了状态校验分支,搜索失败时直接抛出错误,避免无效执行后续操作
  • 输出已匹配邮件数量,方便你直观判断搜索进度
  • 如果搜索范围极大、匹配邮件量级很高,可以将Start-Sleep的秒数调整为30或60,进一步降低接口调用频率

注意事项

  • 执行Purge操作需要账号持有合规搜索管理员、组织管理等对应权限,权限不足也会导致删除操作失败
  • SoftDelete删除的邮件会保留在用户的可恢复项目文件夹中,保留期到期后才会彻底清除,如果需要立即永久删除可将-PurgeType参数值调整为HardDelete

内容的提问来源于stack exchange,提问作者retrac89

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:15:04