Представим себе ситуацию, когда нам необходимо получить некую статистику по работе почтового сервера.
Например сколько писем было получено или отправлено за тот или иной период времени. Сколько было обработано локальных запросов, а сколько внешних?
Получения данной информации воспользуемся командлетом Get-MessageTrackingLog из EMS
Простой запуск данного командлета выведет на экран содержимое всех (по умолчанию хранится информация за последние 30 дней) лог-файлов почтового сервера (Message Tracking Logs). Вернее не всех, а лишь части, ограниченной тысячью записей. Чтобы снять это ограничение, воспользуемся ключем -resultsize unlimited
выведет нам список всех записей, доступных в лог-файлах.
Например нам нужно узнать, сколько сообщений было отправлено пользователям домена mail.ru за период с 1 по 10 декабря 2013 года. Для получения данной информации нам нужно установить ограничение временного интервала. За это отвечают параметры Start и End. Так как нам нужно получить список отправленных сообщений, то нам необходимо установить отбор по типу события "Send". Делается это при помощи ключа EventId. В итоге наша команда принимает вид:
Теперь из списка всех отправленных сообщений выделим те, которые отправлялись получателям домена mail.ru
Для этого добавим выборку
Теперь на осталось только посчитать строчки, которые у нас получились.
Сделать это можно двумя способами.
1) воспользоваться командлетом Measure-Object
2) передать вывод полученной нами команды в переменную, для которой затем воспользоваться командой count
При должной фантазии можно получить вывод разнообразной интересной информации. Например получить количество всех сообщений полученных из вне за период с 1 по 10 декабря 2013 года.
Для этого воспользуемся конструкцией вида:
*yourdomain.com нужно заменить на имя вашего почтового домена.
В общем, как мне кажеться, суть понятна :)
А если переформулировать задачу и попробовать получить TOP-10 адресов, которые отправили самое большое число сообщений за период с 1 декабря 2013 года.
Для начала получим список отправленных сообщений и выведем значения полей Sender и MessageId :
P.S. для справки:
операторы сравнения
Get-Unique
Group-Object
Select-Object
Например сколько писем было получено или отправлено за тот или иной период времени. Сколько было обработано локальных запросов, а сколько внешних?
Получения данной информации воспользуемся командлетом Get-MessageTrackingLog из EMS
Простой запуск данного командлета выведет на экран содержимое всех (по умолчанию хранится информация за последние 30 дней) лог-файлов почтового сервера (Message Tracking Logs). Вернее не всех, а лишь части, ограниченной тысячью записей. Чтобы снять это ограничение, воспользуемся ключем -resultsize unlimited
Get-MessageTrackingLog -resultsize unlimited
выведет нам список всех записей, доступных в лог-файлах.
Например нам нужно узнать, сколько сообщений было отправлено пользователям домена mail.ru за период с 1 по 10 декабря 2013 года. Для получения данной информации нам нужно установить ограничение временного интервала. За это отвечают параметры Start и End. Так как нам нужно получить список отправленных сообщений, то нам необходимо установить отбор по типу события "Send". Делается это при помощи ключа EventId. В итоге наша команда принимает вид:
Get-MessageTrackingLog -resultsize unlimited -Start "12/01/2013" -End "12/10/2013" -EventId "Send"Добавим вывод только нужных нам полей, например время события, отправитель сообщения, тема сообщения (данное действие делается лишь для наглядности вывода, если необходимо просто подсчитать количество сообщений, то ограничение, накладываемое функцией Select-Object можно не использовать)
Get-MessageTrackingLog -resultsize unlimited -Start "12/01/2013" -End "12/10/2013" -EventId "Send" | Select-Object timestamp, sender, recipients, messagesubject
Теперь из списка всех отправленных сообщений выделим те, которые отправлялись получателям домена mail.ru
Для этого добавим выборку
Get-MessageTrackingLog -resultsize unlimited -Start "12/01/2013" -End "12/10/2013" -EventId "Send" | Where {$_.Recipients -like "*@mail.ru"} | Select-Object timestamp, sender, recipients, messagesubject
Теперь на осталось только посчитать строчки, которые у нас получились.
Сделать это можно двумя способами.
1) воспользоваться командлетом Measure-Object
Get-MessageTrackingLog -resultsize unlimited -Start "12/01/2013" -End "12/10/2013" -EventId "Send" | Where {$_.Recipients -like "*@mail.ru"} | Select-Object timestamp, sender, recipients, messagesubject | Measure-Object
2) передать вывод полученной нами команды в переменную, для которой затем воспользоваться командой count
$col = Get-MessageTrackingLog -resultsize unlimited -Start "12/01/2013" -End "12/10/2013" -EventId "Send" | Where {$_.Recipients -like "*@mail.ru"} | Select-Object timestamp, sender, recipients, messagesubject
$col.count
При должной фантазии можно получить вывод разнообразной интересной информации. Например получить количество всех сообщений полученных из вне за период с 1 по 10 декабря 2013 года.
Для этого воспользуемся конструкцией вида:
Get-MessageTrackingLog -resultsize unlimited -Start "12/01/2013" -End "12/10/2013" -EventId "Receive" | Where {$_.Sender -notlike "*@yourdomain.com"} | Select-Object timestamp, sender, recipients, messagesubject | Measure-Object
*yourdomain.com нужно заменить на имя вашего почтового домена.
В общем, как мне кажеться, суть понятна :)
А если переформулировать задачу и попробовать получить TOP-10 адресов, которые отправили самое большое число сообщений за период с 1 декабря 2013 года.
Для начала получим список отправленных сообщений и выведем значения полей Sender и MessageId :
Get-MessageTrackingLog -resultsize unlimited -Start "12/01/2013" -EventId "Send" | Select-Object Sender, MessageIdЗатем из полученного списка возьмем только уникальные строки:
Get-MessageTrackingLog -resultsize unlimited -Start "12/01/2013" -EventId "Send" | Select-Object Sender, MessageId | Get-Unique -AsStringСгруппируем полученный результат по отправителю:
Get-MessageTrackingLog -resultsize unlimited -Start "12/01/2013" -EventId "Send" | Select-Object Sender, MessageId | Get-Unique -AsString | Group-Object -Property SenderОтключим отображение поля MessageId, оно нам больше не нужно. Затем отсортируем выведенный результат в порядке уменьшения количества сообщений.
Get-MessageTrackingLog -resultsize unlimited -Start "12/01/2013" -EventId "Send" | Select-Object Sender, MessageId | Get-Unique -AsString | Group-Object -Property Sender | Select-Object name,count | sort count -descНу и последним шагом оставим лишь первые TOP-10 отправителей и наведем небольшую красоту:
Get-MessageTrackingLog -resultsize unlimited -Start "12/01/2013" -EventId "Send" | Select-Object Sender, MessageId | Get-Unique -AsString | Group-Object -Property Sender | Select-Object name,count | sort count -desc | select -first 10 | ft -auto
P.S. для справки:
операторы сравнения
Get-Unique
Group-Object
Select-Object
Комментариев нет:
Отправить комментарий