Поиск писем в почтовых ящиках с помощью Powershell в Exchange 2010. Search-mailbox
Командлет Search-Mailbox используется для поиска по почтовым ящикам и копирования результатов в указанный целевой почтовый ящик, удаления сообщений из исходного почтового ящика или обеих задач сразу.
Чтобы воспользоваться в полной мере коммандлетом Search-mailbox, нужно добавить свою учётную запись в две группы Exchange:
Add-RoleGroupMember -Identity "Discovery Management" -Member admin
Add-RoleGroupMember -Identity "Mailbox Import Export Group" -Member admin
Стоит отметить, что если у вас стоит русский Exchange, то параметры SearchQuery нужно указывать тоже на русском — получено, отправлено, откого, кому, тема и т.д., иначе можно получить ошибку «Ключевое слово property не поддерживается»
Чтобы просмотреть журнал сообщений в результатах поиска перед их удалением, выполните командлет Search-Mailbox с параметром LogOnly.
1. Поиск по ящику d.adrianovskiy от «Бизнес-школа СКОЛКОВО», полученного с 18 по 19 ноября 2016, копирование найденных писем в ящик admin и папку test:
Search-mailbox -Identity "d.adrianovskiy" -SearchQuery {from:"Бизнес-школа СКОЛКОВО" Received: 18/11/2016..19/11/2016 } -TargetMailbox "admin" -LogLevel full -TargetFolder test
2. Параметр EstimateResultOnly позволяет показать только результат поиска:
Search-mailbox -Identity "mailboxuser" -SearchQuery отправлено:"1/01/2017..27/01/2017", получено:"1/01/2017..27/01/2017" -EstimateResultOnly
3. Поиск по всем ящикам:
Get-Mailbox -resultsize unlimited | Search-mailbox -SearchQuery 'subject:"Mail delivery failed" ...
4. Поиск писем на конкретном сервере во всех ящиках:
Get-Mailbox –Server "Servername" –ResultSize unlimited | Search-Mailbox -SearchQuery ...
5. Поиск во всех почтовых ящиках компании с любыми типами вложений, содержащих слово Virus в названии. При этом сообщение журнала отправляется в почтовый ящик администратора.
Get-Mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery attachment:virus* -TargetMailbox admin -TargetFolder "SearchAndDeleteLog" -LogOnly -LogLevel Full
Ещё примеры поиска:
Search-mailbox -Identity "mailboxuser" -SearchQuery кому:"mail@mail.ru", отправлено:"1/13/2017..8/11/2016" -TargetMailbox "mail" -TargetFolder "Archive" -LogLevel Full
Search-mailbox -Identity "mailboxuser" -SearchQuery получено:"7/2/2017..9/2/2017", тема:"RE: Tema" -TargetMailbox "mailbox" -TargetFolder "Archive" -LogLevel Full
Search-mailbox -Identity "user" -SearchQuery получено:"3/02/2017", откого:"vasya@yandex.ru" -TargetMailbox "admin" -TargetFolder "Archive" -LogLevel Full
Поиск и удаление сообщений в Exchange из почтовых ящиков.
При использовании командлета Search-Mailbox с параметром DeleteContent сообщения окончательно удаляются из исходного почтового ящика. Перед окончательным удалением сообщений рекомендуется использовать параметр LogOnly для создания журнала сообщений, найденных в результатах поиска, или скопировать эти сообщения в другой почтовый ящик перед их удалением из исходного почтового ящика.
1. Поиск в ящике v.yurov по теме письма и удаление найденных писем:
Search-mailbox -Identity "v.yurov" -SearchQuery 'subject:"Mail delivery failed"' -DeleteContent -confirm:$false
2. В этом примере во всех почтовых ящиках организации выполняется поиск сообщений, содержащих строчку «User Audit» в теме, после чего журнал сообщений попадает администратору в ящик:
Get-Mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery 'Subject:"User Audit"' -TargetMailbox admin -TargetFolder "SearchLog" -LogOnly -LogLevel Full
3. Поиск во всех ящиках компании писем с адреса test@test.ru и удаление найденных писем без подтверждения:
Get-Mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery 'from:test@test.ru' -DeleteContent -confirm:$false
привет!
Привет
Всем привет! Всьо клас.
При попытке воспользоваться первой же командой (подправленной под себя), получаю ошибку
Search-mailbox : The term ‘Search-mailbox’ is not recognized as the name of a cmdlet, function, script file, or operabl
e program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ Search-mailbox -Identity «ivavov_ia» -SearchQuery {from:»Гаус Влади …
+ ~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Search-mailbox:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Не подключены cmdlet`ы Exchange.
Я пользуюсь скриптом для подключения
$psISE.CurrentPowerShellTab.AddOnsMenu.SubMenus.Add(
«Connect to Exchange»,
{
$s = New-PSSession -ConfigurationName Microsoft.Exchange `
-ConnectionUri http:///PowerShell/ `
-Authentication Kerberos
Import-PSSession $s
},
«Control+Alt+Z»
)
-ConnectionUri http://«Имя сервера Exchange»/PowerShell/ `