Возникла необходимость удалить, разосланное всем сообщение из почтовых ящиков пользователей, для этих целей использовал скрипт на Exchange Power Shell:
содержимое файла скрипта "Delete message from many mailboxes.ps1":
#переменная имени файла
$File_Name="D:\MailboxList.txt"
#заполняем массив строками из файла
$mass=Get-Content $File_Name
#админская учетка
$Admin_username="NETBIOSDOMAINNAME\Admin_Exch"
#параметры поиска для удаления письма
#текст в письме
$Text_ContentKeywords="Бла, бла, бла."
#имя вложения
$Text_AttachmentFilenames="Список.xls"
#дата начала поиска
$Text_StartDate="20/07/2010 14:00:00"
#цикл перебора строк из файла
foreach($string in $mass)
{
#присваиваем переменной имени пользователя строку из файла
$user_mailbox=$string
#добавляем права адмиской учетке на ящик
Add-MailboxPermission -identity $user_mailbox -Accessrights FULLACCESS -User $Admin_username
#Удаляем элемент из почтового ящика
Export-Mailbox -Identity $user_mailbox -ContentKeywords $Text_ContentKeywords -AttachmentFilenames $Text_AttachmentFilenames -StartDate $Text_StartDate -DeleteContent -Confirm:$false
}
поскольку файл с почтовыми ящиками содержал >1200 записей - разбил его на 3 части(надо было на большее число частей, что бы ещё быстрее) и запустил на разных серверах Exchange 2007.
Нагрузка(Workload) на 4х процессорный сервер(активная нода CCR кластера почтовых ящиков) с Xeon 3ГГц процессорами была в районе 50%, нагрузка на диски была не большаяпри этом был RAID5 на 4х дисках, а общий объем занимаемый базами почтовых ящиков был чуть больше 320Гб. По памяти на ноде было 16Гб RAM.
Надо сказать, что сообщение, подлежащее удалению, было отозвано отправителем через 40 минут, и ему стали сыпаться уведомления о недоставке. Мы сформировали список пользователей из письма, которым было отправлено это почтовое сообщение (делали в excel), исключили из него тех, у кого сообщение было успешно отозвано(ждали ночное время), и, вытащив из Active Directory имена пользователей (distinguishedname) с логинами(LoginName) и именами почтовых ящиков (mail) (как это делается см. следующий пост) сопоставили через Acces c теми, у кого почта была не отозвана, получив таким образом список почтовых ящиков из которых необходимо было удалить злополучное письмо в виде текстового файла (в скрипте это переменная $File_Name).
Из работы скрипта, а точнее команды Export-Mailbox не понравилось то, что она не ищет во вложенных папках, т.е. если пользователь в Microsoft Outlook клиенте у себя в папке Входящие(Inbox), например, создал еще какую-то папку, и искомое письмо оказалось в ней, то оно не будет удалено скриптом, в том виде скрипта в каком он указан в настоящий момент. Хоть у команды Export-Mailbox и есть ключ -IncludeFolders он не позволяет указывать маску поиска подпапок, а только перечислять конкретные имена папок(проверено).
Кстати, поначалу тоже столкнулся с ошибкой:
The export-mailbox task for mailbox 'test test' failed.
Error: Failed to copy messages to the destination mailbox store with error:
MAPI or an unspecified service provider.
ID no: 00000000-0000-00000000, error code: -1056749164
Даже мысли не возникло, с подозрением на нехватку прав на почтовый ящик, поскольку пользователь из-под которого это всё запускалось был в группах DomainAdmin, Exchange Administrator, Enterprise Administrator, но как оказалось без строки в коде:#добавляем права адмиской учетке на ящик
Add-MailboxPermission -identity $user_mailbox -Accessrights FULLACCESS -User $Admin_username
Это не работает, всё-равно.
Полезные ссылки:
http://shss.wordpress.com/2010/07/08/ad-add-telephone-numbers-using-excel-application-as-data-soutce/
http://blogs.sysfaq.ru/powershell/category/learn/page/2/
http://window.edu.ru/window_catalog/pdf2txt?p_id=31200&p_page=5
http://mcp.su/2009/09/powershell-exchange-2007-ad/
http://technet.microsoft.com/ru-ru/library/bb676491(EXCHG.80).aspx
http://www.intuit.ru/department/os/compromtwin/19/2.html
http://www.osp.ru/win2000/2007/03/4245842/
http://sysadmins.ru/topic265273.html
http://www.osp.ru/win2000/2007/03/4245842/
http://www.exchangeinbox.com/article.aspx?i=102
Комментариев нет:
Отправить комментарий