Exchange邮件组嵌套多层如何删除邮件?
Exchange邮件组嵌套多层如何删除邮件?
背景
公司里经常有同学发错了邮件需要撤回,最近两周就有两个典型案例,都是错发到多层嵌套邮件组里。通常大的邮件组可能会层层嵌套多个小邮件组。而Exchange本身只提供了查看邮件组直接成员的命令,对于嵌套组的成员没办法直接查看。 这就导致类似场景没办法将多层嵌套的用户邮件进行删除。
常规处理方式
一直以来,IT对不同场景下,删除邮件的手段如下:
全员邮件,比如通告通知类的,直接遍历公司所有邮箱进行删除。层层嵌套多层邮件组,直接遍历公司所有邮箱进行删除。单个邮件组无嵌套或者嵌套简单,逐一对几个组进行遍历删除。但是,对于多层嵌套邮件组来讲,遍历全员邮箱是多余的,效率也低。
使用递归脚本遍历
Add-PSSnapin microsoft.exchange* $group = "mtt" $lists = New-Object -TypeName System.Collections.ArrayList $lists.Add($group) Function Get-RecureGroup(){ $temp = (Get-DistributionGroupMember -Identity $group | ? {$_.RecipientType -eq "MailUniversalDistributionGroup"}).Name # Write-Output "$temp" if($temp.Length -gt 0){ Foreach($i in $temp){ if ($lists -notcontains $i){ $lists.Add($i) $group = $i Get-RecureGroup } } } } Get-RecureGroup Write-Output "$lists" Function Delete-Email(){ Foreach($dl in $lists){ Get-DistributionGroupMember $dl | ? {$_.RecipientType -eq "UserMailbox"} | Get-Mailbox |Search-Mailbox -SearchQuery 'From:VDIDirectorMointor@immomo.com' -EstimateResultOnly } } Delete-Email
-EstimateResultOnly 参数只是返回搜索结果(可用于预览每个邮箱中匹配的邮件数量),并不执行删除,删除参数为 -DeleteContent。
看一下脚本执行结果:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~