none
Интересная задача про PowerShell RRS feed

  • Общие обсуждения

  • Приветствую, коллеги! Даже не знаю, решаема ли она.

    Задача: найти в почтовом ящике пользователя письма с самым большим количеством получателей. Например, топ-50. Ищем и по Входящим, и по исходящим. Задача связана с "подсосом" пользовательской почты в 1С. Есть подозрение, что при количестве получателей у письма больше 100 1С выдаёт ошибку. Вот и нужно такие письма найти. Шерстить весь ящик руками совершенно не вариант, естественно.

    8 августа 2016 г. 3:40

Все ответы

  • Сделайте тестовое письмо с числом получателей более 100 и проверьте свое предположение - зачем перебирать всю почтовыю базу?

    Сазонов Илья

    https://isazonov.wordpress.com/

    8 августа 2016 г. 4:17
    Модератор
  • Если так уж хочется, то командлетом Get-MessageTrackingLog получите список всех писем за нужный период времени и анализируйте поле Recipients.

    Сазонов Илья

    https://isazonov.wordpress.com/

    8 августа 2016 г. 4:19
    Модератор
  • Еще можно так:

    Get-TransportService | Get-MessageTrackingLog -Start 08/08/2016 -Recipients user@contoso.com | ? RecipientCount -gt 50 | ft Sender,recipients,MessageSubject,RecipientCount

    Если есть логи транспорта, то нет смысла выполнять Search-Mailbox для того, чтобы получить количество получателей письма. 

    8 августа 2016 г. 10:32
  • Мой Exchange говорит, что не знает 
    Get-TransportService
    8 августа 2016 г. 10:36
  • Да, точно. Это же 2010. Попробуйте так:

    Get-TransportServer

    8 августа 2016 г. 10:38
  • Не совсем понятно - имеется в виду максимальное количество получателей в одном письме или максимальное количество отправленных писем по разным получателям?

    У нас как-то встала такая задача, но по другой причине (пользователь отправил письмо, указав за раз 500 получателей, пришлось искать этого нарушителя...). Делала через трассировку сообщений.

    8 августа 2016 г. 10:41
  • Увы, не особо силён в PowerShell, но обычная замена ничего не дала. Теперь

    Get-TransportServer | Get-MessageTrackingLog -Start 08/08/2016 -Recipients user@domain.com
     | ? RecipientCount -gt 50 | ft Sender,recipients,MessageSubject,RecipientCount

    ругается на 

    ? : Cannot bind parameter 'FilterScript'. Cannot convert the "RecipientCount" value of type "System.String" to type "Sy
    stem.Management.Automation.ScriptBlock".
    At line:1 char:100
    + Get-TransportServer | Get-MessageTrackingLog -Start 08/08/2016 -Recipients user@domain.com | ? <<<<  RecipientCount -gt 50 | ft Sender,recipients,MessageSubject,RecipientCount
        + CategoryInfo          : InvalidArgument: (:) [Where-Object], ParameterBindingException
        + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand
    

    8 августа 2016 г. 10:44
  • Не совсем понятно - имеется в виду максимальное количество получателей в одном письме или максимальное количество отправленных писем по разным получателям?

    У нас как-то встала такая задача, но по другой причине (пользователь отправил письмо, указав за раз 500 получателей, пришлось искать этого нарушителя...). Делала через трассировку сообщений.

    Именно куча получателей в одном письме.
    8 августа 2016 г. 10:45
  • Ясно, избавляемся от сокращений.

    Get-TransportServer | Get-MessageTrackingLog -Start 08/08/2016 -Recipients user@domain.com | WHERE {$_.RecipientCount -gt 50 } | ft Sender,recipients,MessageSubject,RecipientCount

    8 августа 2016 г. 10:47
  • Добрый день,  если я Вас правильно понял у  меня была  абсолютная такая же ситуация в свое время

    у нас платформа 8.3 и также есть MS Excahnge, нашел и столкнулся с проблемой которую озвучивали Вы, я пошел другим путем и реализовал следующее.

    Так как в 1С есть ограничение на приемку писем до 1000 сообщений по протоколу POP3, а IMAP 1С вообще не принимает. Я настроил получение писем в 1С по протоколу POP3

    8 августа 2016 г. 10:49
  • У нас и так получение идёт по POP3
    8 августа 2016 г. 10:56