none
Удаление вложений в сообщениях старше N дней

    Вопрос

  • Коллеги всем привет! Имею задачу, которую не могу решить. Поиск не дал особых результатов. В exchange не силен, надеюсь вашу на поддержку. Собственно сама задача: Необходимо удалять сообщения с вложениями либо только вложения со всех почтовых ящиков старше N дней. Удалить сообщения старше N дней получается. 

    Как реализовать это с помощью EMS?

    Пробовал:

    Search-Mailbox -Identity antonova@mailbox.ru -SearchQuery '(attachment:<09/07/2017)' -DeleteContent

    Результат:

    RunspaceId       : e3e14768-7653-45ff-be0c-91ddcaed5b6e
    Identity         : intra.ulzapad.ru/ulzapad_users/LAW/Антонова Анастасия Вячеславовна
    TargetMailbox    :
    Success          : True
    TargetFolder     :
    ResultItemsCount : 0
    ResultItemsSize  : 0 B (0 bytes)

    Хотя вложения в этом ящике присутствуют.

    Очень прошу Вашей помощи.

    9 октября 2017 г. 5:16

Ответы

  • Добрый день,

    встроенными средствами Exchange не выйдет. Решение, искать сторонний софт или самому углубляться в программирование на EWS и писать соответствующий скрипт (задача не тривиальная).

    В E2016 появился параметр hasattachment:true, решающий эту задачу, но в 2013 его не добавили, увы.

    9 октября 2017 г. 10:05
  • ...в этом варианте дату надо править вручную каждый день. Необходимо автоматическое удаление с давностью 90 дней, например добавив скрипт в планировщик

    Т.е. изначально вот эти попытки -SearchQuery '(attachment:<09/07/2017)'  вас не смущали, что же, аппетиты растут :)

    Тогда возвращаемся к первому предложенному варианту, кодим на ews, ищем сторонний софт или таки правим руками. Каждый день зачем это запускать немного неясно... Ну либо дальше разбирайтесь с переменной и почему SearchQuery ее не воспринимает должным образом. Я как то долго пытался побороть сей факт, ContentFilter победить удалось, а SearchQuery ни в какую переменную не воспринимает как надо, выдавая нулевой результат.

    И со звездочкой вначале фильтра смотрите, могут быть сюрпризы)

    12 октября 2017 г. 14:28

Все ответы

  • Добрый день,

    встроенными средствами Exchange не выйдет. Решение, искать сторонний софт или самому углубляться в программирование на EWS и писать соответствующий скрипт (задача не тривиальная).

    В E2016 появился параметр hasattachment:true, решающий эту задачу, но в 2013 его не добавили, увы.

    9 октября 2017 г. 10:05
  • Удаление сообщений с вложениями выполняется:

    Search-Mailbox -Identity antonovaav@mailbox.ru -SearchQuery 'attachment:"*.jpg"', 'attachment:"*.pdf"' -DeleteContent -Force

    Как удалить только сообщения с вложениями старше 90 дней?

    пробовал дописывать 'Received:>$(Get-Date).adddays(-90)'. 

    Результат:

    RunspaceId       : e3e14768-7653-45ff-be0c-91ddcaed5b6e
    Identity         : intra.ulzapad.ru/ulzapad_users/LAW/Антонова Анастасия Вячеславовна
    TargetMailbox    :
    Success          : True
    TargetFolder     :
    ResultItemsCount : 0
    ResultItemsSize  : 0 B (0 bytes)

    12 октября 2017 г. 7:33
  •  Так и есть,

    $daysback = (Get-Date).adddays(-90)

    Search-Mailbox antonovaav@mailbox.ru –SearchQuery “Received:< $($daysback)” –DeleteContent

    Не находит ничего, а вложения есть, хотите сказать?

    Давайте тогда от задачи

    Собственно сама задача: Необходимо удалять сообщения с вложениями либо только вложения со всех почтовых ящиков старше N дней. Удалить сообщения старше N дней получается. 

    Как реализовать это с помощью EMS?

    Пойдем в сторону политик хранения, почитаем как они работают и настроим политику, которая проштампует сообщения и будет удалять те, которые старше N дней.

    И решим задачу.

    12 октября 2017 г. 8:52
  • Политики удаляют все сообщения, а задача: удалять только сообщения с вложениями старше N дней
    12 октября 2017 г. 9:59
  • Удаление сообщений с вложениями выполняется:

    Search-Mailbox -Identity antonovaav@mailbox.ru -SearchQuery 'attachment:"*.jpg"', 'attachment:"*.pdf"' -DeleteContent -Force

    Как удалить только сообщения с вложениями старше 90 дней?

    Вы бы чтоли сразу написали, что вам не всё с аттачами надо удалить, а только с определенным типом вложений. Можете попробовать так:

    Search-Mailbox antonovaav@mailbox.ru –SearchQuery 'attachment:"*.jpg"','Received:1/1/2000..7/12/2017' -DeleteContent -Force
    7/12/2017 поменяете на свои минус 90 дней, тут указал просто минус три месяца. Формат mm/dd/yyyy, возможно у вас надо будет поменять на dd/mm/yyyy
    Только со звездочкой в таких запросах стоит поосторожнее, можете удалить совсем не то, что вам кажется. KQL не поддерживает поиск со зведочкой в начале запроса, как вы тут пытаетесь искать, только в конце.


    • Изменено Ivan.Basov 12 октября 2017 г. 11:06
    12 октября 2017 г. 10:02
  • ...в этом варианте дату надо править вручную каждый день. Необходимо автоматическое удаление с давностью 90 дней, например добавив скрипт в планировщик
    12 октября 2017 г. 11:15
  • ...в этом варианте дату надо править вручную каждый день. Необходимо автоматическое удаление с давностью 90 дней, например добавив скрипт в планировщик

    Т.е. изначально вот эти попытки -SearchQuery '(attachment:<09/07/2017)'  вас не смущали, что же, аппетиты растут :)

    Тогда возвращаемся к первому предложенному варианту, кодим на ews, ищем сторонний софт или таки правим руками. Каждый день зачем это запускать немного неясно... Ну либо дальше разбирайтесь с переменной и почему SearchQuery ее не воспринимает должным образом. Я как то долго пытался побороть сей факт, ContentFilter победить удалось, а SearchQuery ни в какую переменную не воспринимает как надо, выдавая нулевой результат.

    И со звездочкой вначале фильтра смотрите, могут быть сюрпризы)

    12 октября 2017 г. 14:28