Как удалить сообщения по определенным критериям в нескольких почтовых ящиках в Exchange Server 2010?
В Exchange Server 2007 эту операцию можно было выполнить двумя командами. Например, пользователю pnagaev нужно удалить в почтовом ящике пользователя Elena сообщение, содержащее слова «Odnoklassniki.ru»:
1 2 |
Add-MailboxPermission -Identity Elena -User pnagaev -AccessRights FullAccess Get-Mailbox -Identity Elena | Export-Mailbox -SubjectKeywords "Odnoklassniki.ru" -DeleteContent |
После выполнения нужно не забыть забрать права у пользователя pnagaev.
В общем-то это не очень хороший способ, т.к. к содержимому ящиков получает доступ третье лицо — администратор, что всегда осуждалось в среде специалистов по Exchange Server. Делай что хочешь, но в почтовый ящик пользователя залезать нельзя ни под каким предлогом.
В Exchange Server 2010 SP1 механизм доступа был пересмотрен, вышеприведенная команда Export-Mailbox не поддерживается.
Команда New-MailboxExportRequest не поддерживает параметр «-DeleteContents»
Для того, чтобы найти и удалить сообщения в Exchange Server 2010 SP1, необходимо назначить пользователю следующие роли.
1 2 |
New-ManagementRoleAssignment -Role "Support Diagnostics" –User pnagaev New-ManagementRoleAssignment -Role "Mailbox Import Export" -User pnagaev |
Вышеприведенные команды предоставят пользователю только необходимые права для удаления сообщений, но доступа к содержимому почтового ящика у пользователя не будет.
Для поиска и удаления сообщений служит следующая команда
1 |
Search-Mailbox -Identity Elena -SearchQuery 'subject:"Odnoklassniki.ru"' –DeleteContent |
Эта команда может быть запущена для всех почтовых ящиков
1 |
Get-Mailbox –Server “*имя сервера*” –ResultSize unlimited | Search-Mailbox -SearchQuery 'subject:"Odnoklassniki.ru"' –DeleteContent |
Как мы видим запрос для поиска состоит из специальных слов, например «subject:», «from:». Остальные слова можно посмотреть по ссылке Advanced Query Syntax