У нас была группа рассылки на Exchange 2010, в которой долгое время не было участников (никто не заметил). Что происходит с электронными письмами, приходящими в такую группу? Не было никаких ответных сообщений или чего-то подобного.
К сожалению, все эти электронные письма ушли в черную дыру. Exchange выполнил свою работу, он нашел получателей, но ничего не существует, поэтому отклоняет электронную почту. Для получения этих писем вам потребуется настройка архива / соответствия.
Также обратите внимание: вы также не получите никаких отчетов о недоставке, процесс завершился, как и ожидалось.
К сожалению, они никуда не денутся. Мы создали сценарий PowerShell, который запускается ежедневно и сообщит нам, если обнаружит пустые группы рассылки.
Просто поместите это в файл .ps1 и запланируйте его запуск с любым предпочтительным интервалом.
$FromAddress = "exchserver@example.com"
$ToAddress = "itdept@example.com"
$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)
}
Вот обновленная информация о возможном коде. Более эффективный запрос, поскольку он возвращает только список пустых групп. Немного тупо, поскольку можно подумать, что Get-DistributionGroup не знает о членах (отсюда и необходимость в командлете Get-DistributionGroupMember).
$emptygroups = Get-DistributionGroup -Filter {members -eq $null}
Я подтвердил, что работает на Exchange 2010, SP2, RU5v2.
Спасибо! Для меня ничего не происходило с приведенным выше сценарием - не уверен, что это другая версия 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= обмен2010