none
Exchange Online - Удалить письмо у всех пользователей RRS feed

  • Вопрос

  • Доброго коллеги!

    Ситуация: Пришло письмо на группу рассылки (а в ней 160 чел.) - по виду, плохое письмо, хотелось бы его каким-то правилом удалить из всех ящиков к кому оно попало, чтобы глаза пользователям не мозолило. В Exchange Online есть вообще такая возможность через веб интерфейс или только PS хирургия? Я нашел статейку вроде для решения, но это для PS, а хотелось бы попроще - веб.

    Буду благодарен за информацию.

    Спасибо!

    26 декабря 2019 г. 18:40

Ответы

  • При удалении рекомендую удаляемый контент перенести в отдельный пя, чтобы в случае косяка (например неверного фильтра) вы смогли эти письма "вернуть" владельцам.

    ***    Search-Mailbox -SearchQuery ("received<="+$date.tostring("MM/dd/yyyy")) -TargetMailbox DeletedMailbox -TargetFolder XXX -LogLevel Full -Confirm:$false -Force -DeleteContent

    Также можно запустить поиск поиск перед их удалением, чтобы также убедиться в правильности выборки.

    И вот только после этого удалять.

    27 декабря 2019 г. 6:17
  • как я понимаю ищет по все ящикам почтового сервера $Mailbox in Get-Mailbox -ResultSize Unlimited

    Да

    и не понял что вот эта конструкция означает Search-Mailbox -Identity $Mailbox.DistinguishedName

    Всё дело в том, что бывают ещё и общие почтовые ящики, которые могут иметь одинаковые имена, но разные почтовые домены. Например, user@contoso.com и user@fabricam.com. Так вот если использовать стандартный поиск по имени - будет ошибка, которая решается с помощью поиска по DistinguishedName

    но ищем по теме и отправителю -SearchQuery '(subject:Тема*) AND (from:user@domain.tld).

    И результаты поиска, предположим, этот запрос найдет указанное письмо в 100 ящиках. Запрос переместит эти письма из этих ящиков в указанный (к примеру мой) -TargetMailbox Ваш@почтовый.ящик, в указанную папку в моем ящике -TargetFolder какая-то-папка? А в тех 100 ящиках письмо удалиться?

    Нет, этот запрос только на поиск писем. Они будут скопированы в ваш@почтовый.ящик. Вы проверите результаты поиска, если лишних писем нет - можете использовать команду:

    foreach ($Mailbox in Get-Mailbox -ResultSize Unlimited) {Search-Mailbox -Identity $Mailbox.DistinguishedName -SearchQuery '(subject:Тема*) AND (from:user@domain.tld)' -DeleteContent -Force
    Учтите, что команда не удаляет письма, которые были уже удалены из корзины, но всё ещё находятся в папке "recovered items", которая очищается с помощью ключа -SearchDumpsterOnly

    И в параметрах -TargetMailbox и -TargetFolder имя своего ящика и имя папки в нем надо просто указывать или в кавычках?

    Попробуйте просто, если не сработает - в кавычках. Но вроде без них. 

    29 декабря 2019 г. 9:12

Все ответы

  • foreach ($Mailbox in Get-Mailbox -ResultSize Unlimited) {Search-Mailbox -Identity $Mailbox.DistinguishedName -SearchQuery ' (subject:Тема*) AND (Sent:"26/12/2019") AND (from:user@domain.tld)' -DeleteContent -Force}
    Куда уж проще? Просто укажите нужную тему письма, дату и адрес, с которого пришло "плохое письмо".
    26 декабря 2019 г. 18:47
  • При удалении рекомендую удаляемый контент перенести в отдельный пя, чтобы в случае косяка (например неверного фильтра) вы смогли эти письма "вернуть" владельцам.

    ***    Search-Mailbox -SearchQuery ("received<="+$date.tostring("MM/dd/yyyy")) -TargetMailbox DeletedMailbox -TargetFolder XXX -LogLevel Full -Confirm:$false -Force -DeleteContent

    Также можно запустить поиск поиск перед их удалением, чтобы также убедиться в правильности выборки.

    И вот только после этого удалять.

    27 декабря 2019 г. 6:17
  • Сначала подключаемся к Exchange как обычно (импортируя командлеты и т.д.) а потом эту команду?

    параметр даты я так понимаю не обязателен ведь? я ведь могу поискать только по адресу отправителя?

    27 декабря 2019 г. 8:22
  • Чтобы почувствовать себя чутка более уверенно - http://winitpro.ru/index.php/2018/07/20/search-mailbox-poisk-i-udalenie-otdelnyx-pisem-iz-yashhikov-exchange/
    27 декабря 2019 г. 8:45
  • Сначала подключаемся к Exchange как обычно (импортируя командлеты и т.д.) а потом эту команду?

    так как Вы работаете с Exchange Online [да это касается не только Online, но и Exchange On-Premises 201X], то Вам надо учится PowerShell. Это сэкономит Вам кучу времени. Подключаются к Exchange Online так:

    $Cred = get-Credential
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange "https://outlook.office365.com/powershell-liveid/" -Credential $Cred -Authentication "Basic" -AllowRedirection
    Import-PSSession $Session

    а дальше уже выполнять нужные команды. Так как делать будет в первый раз, то действительно рекомендуется вначале провести поиск нужных писем. К сожалению, PowerShell не выводит результаты поиска, но копирует их в некий почтовый ящик (например, Ваш):

    foreach ($Mailbox in Get-Mailbox -ResultSize Unlimited) {Search-Mailbox -Identity $Mailbox.DistinguishedName -SearchQuery '(subject:Тема*) AND (from:user@domain.tld)' -TargetMailbox Ваш@почтовый.ящик -TargetFolder какая-то-папка}

    после проверки, если всё было найдено верно - можно удалить. Дату писать не обязательно. 


    • Изменено Anahaym 27 декабря 2019 г. 9:31
    27 декабря 2019 г. 9:29
  • Спасибо друзья за советы и примеры команд. Решил разобраться с некоторыми параметрами этих команд, чтобы понимать что будет происходить.

    Вот эта команда, которую привел Anahaym

    foreach ($Mailbox in Get-Mailbox -ResultSize Unlimited) {Search-Mailbox -Identity $Mailbox.DistinguishedName -SearchQuery '(subject:Тема*) AND (from:user@domain.tld)' -TargetMailbox Ваш@почтовый.ящик -TargetFolder какая-то-папка}

    как я понимаю ищет по все ящикам почтового сервера $Mailbox in Get-Mailbox -ResultSize Unlimited

    и не понял что вот эта конструкция означает Search-Mailbox -Identity $Mailbox.DistinguishedName

    но ищем по теме и отправителю -SearchQuery '(subject:Тема*) AND (from:user@domain.tld).

    И результаты поиска, предположим, этот запрос найдет указанное письмо в 100 ящиках. Запрос переместит эти письма из этих ящиков в указанный (к примеру мой) -TargetMailbox Ваш@почтовый.ящик, в указанную папку в моем ящике -TargetFolder какая-то-папка? А в тех 100 ящиках письмо удалиться?

    И в параметрах -TargetMailbox и -TargetFolder имя своего ящика и имя папки в нем надо просто указывать или в кавычках?


    • Изменено ItDen 29 декабря 2019 г. 8:52
    29 декабря 2019 г. 8:51
  • как я понимаю ищет по все ящикам почтового сервера $Mailbox in Get-Mailbox -ResultSize Unlimited

    Да

    и не понял что вот эта конструкция означает Search-Mailbox -Identity $Mailbox.DistinguishedName

    Всё дело в том, что бывают ещё и общие почтовые ящики, которые могут иметь одинаковые имена, но разные почтовые домены. Например, user@contoso.com и user@fabricam.com. Так вот если использовать стандартный поиск по имени - будет ошибка, которая решается с помощью поиска по DistinguishedName

    но ищем по теме и отправителю -SearchQuery '(subject:Тема*) AND (from:user@domain.tld).

    И результаты поиска, предположим, этот запрос найдет указанное письмо в 100 ящиках. Запрос переместит эти письма из этих ящиков в указанный (к примеру мой) -TargetMailbox Ваш@почтовый.ящик, в указанную папку в моем ящике -TargetFolder какая-то-папка? А в тех 100 ящиках письмо удалиться?

    Нет, этот запрос только на поиск писем. Они будут скопированы в ваш@почтовый.ящик. Вы проверите результаты поиска, если лишних писем нет - можете использовать команду:

    foreach ($Mailbox in Get-Mailbox -ResultSize Unlimited) {Search-Mailbox -Identity $Mailbox.DistinguishedName -SearchQuery '(subject:Тема*) AND (from:user@domain.tld)' -DeleteContent -Force
    Учтите, что команда не удаляет письма, которые были уже удалены из корзины, но всё ещё находятся в папке "recovered items", которая очищается с помощью ключа -SearchDumpsterOnly

    И в параметрах -TargetMailbox и -TargetFolder имя своего ящика и имя папки в нем надо просто указывать или в кавычках?

    Попробуйте просто, если не сработает - в кавычках. Но вроде без них. 

    29 декабря 2019 г. 9:12