这里是普通文章模块栏目内容页
Powershell下使用Search-mailbox删除邮件

运行环境Exchange 2013/2016
首先把搜索的结果保存到一个邮箱中作为备份,好处是通过search-mailbox误删除之后可以方便恢复,命令如下。

Import-Csv -Path 'C:\list\MailList.csv' | Foreach {Search-Mailbox -SearchQuery '主题:"WK32"' -Identity $_.Email -TargetMailbox zengchuixin@demo.com -TargetFolder inbox}


为了精确找到要删除的邮件,在遇到需要模糊搜索的场景下,可以在把搜索结果归档到目标邮箱后,进入目标邮箱,进行再次确认,防止误删
确认无误后,然后再使用下面命令进行批量删除

Import-Csv -Path 'C:\list\MailList.csv' | Foreach {Search-Mailbox -SearchQuery '主题:"Re:WK32"' -DeleteContent -Force -Identity $_.Email}


如果需要删除特定DB的邮件,可以使用下面的命令

Import-Csv -Path 'C:\list\dbList.csv' | Foreach {get-mailbox -Database $_.DBName -ResultSize unlimited | Search-Mailbox -SearchQuery '主题:"面试技能提升秘籍 时间:2016年4月28日 16:00-17:30 (有课程直播呦)"' -DeleteContent -Force}


删除指定邮箱某一时间点之前的所有邮件,例如2012年8月24日之前的所有邮件

[PS] C:\Windows\system32>Search-Mailbox -Identity zengchuixin@demo.com -SearchQuery "发送时间:<2012/08/24"-deletecontent


附件1
maillist.csv文件的内容格式如下。

email
zengchuixin1@demo.com
zengchuixin2@demo.com
zengchuixin3@demo.com
zengchuixin4@demo.com

附件2
dblist.csv的内容如下。

DbName
MBX0602
MBX0603
MBX0604
MBX0605
MBX0701
MBX0702