我们在 Exchange 2010 上有一个通讯组,很长时间没有成员(没有人注意到)。发到这个组的电子邮件会怎样?没有回复消息或任何东西。
答案1
不幸的是,所有这些电子邮件都进入了黑洞。Exchange 已完成其工作,它查找了收件人,但没有任何内容,因此丢弃了电子邮件。您需要存档/合规性设置才能检索这些电子邮件。
另请注意:您也不会收到任何 NDR,该过程确实按预期完成。
答案2
不幸的是,它们无处可去。我们已设置一个 PowerShell 脚本,该脚本每天运行,如果发现空的分发组,它会向我们发送电子邮件。
只需将其放入.ps1 文件中并安排它按照您喜欢的时间间隔运行。
$FromAddress = "[email protected]"
$ToAddress = "[email protected]"
$MessageSubject = "Empty distribution groups"
$SendingServer = "exchserver.example.com"
$groups = Get-DistributionGroup
$emptygroups = ($groups | ? { !(Get-DistributionGroupMember $_) })
if ($emptygroups.count -gt 0) {
$MessageBody = "The following Exchange distribution groups have no members:`r`n`r`n"
$MessageBody += ($emptygroups | Select-Object DisplayName | Out-String)
$SMTPMessage = New-Object System.Net.Mail.MailMessage $FromAddress, $ToAddress, $MessageSubject, $MessageBody
$SMTPClient = New-Object System.Net.Mail.SMTPClient $SendingServer
$SMTPClient.Send($SMTPMessage)
}
答案3
以下是可能代码的更新。由于它只返回空组列表,因此查询效率更高。有点晦涩难懂,因为人们会认为 Get-DistributionGroup 不知道成员(因此需要 Get-DistributionGroupMember cmdlet)。
$emptygroups = Get-DistributionGroup -Filter {members -eq $null}
我已经确认它适用于 Exchange 2010、SP2、RU5v2。
答案4
谢谢!对我来说,上面的脚本什么都没发生 - 不确定它是否是不同的 Powershell 版本或类似版本(Exchange 2010、Server 2008 R2),但“count”属性中没有任何内容。
我必须更换:
if ($emptygroups.count -gt 0) {
和:
$emptygroupcount = echo $emptygroups | measure
if ($emptygroupcount.Count -gt 0) {
如果有人想知道如何安排这个,因为“基本”Powershell 无法识别 Exchange 命令,我按照以下方法创建了一个包装器批处理文件http://social.technet.microsoft.com/Forums/exchange/en-US/0cad57bf-1113-4622-aac3-c3278fa97d72/how-to-schedule-a-powershell-script-through-schedule-tasks?forum=exchange2010