Решено Посчитать объём пересланной\полученной почты через определённый ящик.

Статус
Закрыто для дальнейших ответов.

EviL

Почетный гость
Добрый день!

Подскажите пожалуйста.
Посчитать кол-во писем могу, как посчитать объём?
(Get-MessageTrackingLog -EventID "RECEIVE" -Start (Get-Date).AddDays(-31) -Recipients "user@domen.ru" -ResultSize unlimited).Count

Спасибо!
 
Последнее редактирование модератором:
Не думаю что возможно
Попробуйте что даст командлет
$Temp = Search-MessageTrackingReport -Identity "David Jones" -Recipients [EMAIL]wendy@contoso.com[/EMAIL] Get-MessageTrackingReport Identity Temp.MessageTrackingReportID -ReportTemplate Summary
 
Если есть анти-спам система, то наверное проще в ней посмотреть
 
Проблема.
Общий ящик, пользователи утверждают. что, через ящик к ним приходит до 40 гиг в месяц.
Вот, хотелось бы как-то подтвердить или опровергнуть их слова.

$Temp = Search-MessageTrackingReport -Recipients mailbox@domen.ru Get-MessageTrackingReport -Identity Temp.MessageTrackingReportID -ReportTemplate Summary
Не удается найти позиционный параметр, принимающий аргумент "Get-MessageTrackingReport".
+ CategoryInfo : InvalidArgument: :)) [Search-MessageTrackingReport], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Search-MessageTrackingReport
+ PSComputerName :
 
Последнее редактирование модератором:
Она показывает весь трафик, мне то надо по одному общему ящику.
пытался что-нить выдернуть из скриптика.
Не получается допереть, что надо тянуть.
 

Вложения

  • 7day3.txt
    2,3 КБ · Просмотры: 1
Попробуйте в строке
(Get-TransportServer) | Get-MessageTrackingLog -ResultSize Unlimited -Start $From -End $To | ForEach {
указать еще и нужный ящик
 
прикольно. Интересно будет ли работать в exchange 2019??:unsure:
Версия с генерацией html репорта
 

Вложения

  • MBsize.txt
    3,9 КБ · Просмотры: 1
(Get-TransportServer) | Get-MessageTrackingLog -ResultSize Unlimited -Start $From -End $To | ForEach {

Извините, не понял конец команды.
(Get-TransportServer) | Get-MessageTrackingLog -ResultSize Unlimited -Start (Get-Date).AddDays(-1) | ForEach {mail@domen.ru}

ПРЕДУПРЕЖДЕНИЕ: Командлет Get-TransportServer будет удален в будущей версии Exchange. Используйте вместо него командлет Get-TransportService. Если ваши
сценарии используют командлет Get-TransportServer, замените его на Get-TransportService.
ForEach : Имя "mail@domen.ru" не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания име
ни, а также наличие и правильность пути, после чего повторите попытку.
строка:1 знак:102
+ ... .AddDays(-1) | ForEach {mail@domen.ru}
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (mail@domen.ru:String) [ForEach-Object], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException,Microsoft.PowerShell.Commands.ForEachObjectCommand
 
Последнее редактирование модератором:
Укажите -sender
у меня вроде работает, че то показывает

Код:
#### Variables #####
# период за который будем смотреть статистику, считается от сегодня
$PeriodIndays = 7
# дата по которую смотрим, должна быть меньше чем стартовая
$EndPeriod = Get-date -hour 0 -minute 0 -second 0
# если пишешь вручную помни что дата задается наоброт ММ/ДД/ГГГГ  тоесть "09/5/2016"
$StartPeriod = ($EndPeriod).AddDays( -$PeriodIndays )



####################################################################################
$From = $StartPeriod
$To = $EndPeriod

[Int64] $intSent = 0
[Int64] $intRec = 0
[Int64] $intSentSize = 0
[Int64] $intRecSize = 0
$Total = 0
$TotalSent = 0
$TotalRec  = 0

$MailPerDay = @()
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010

Do {
    $From = $From.AddDays(1)
    $To = $From.AddDays(1)

    $intSent = $intRec = $intSentSize =  $intRecSize = 0

    (Get-TransportService) | Get-MessageTrackingLog -ResultSize Unlimited -Start $From -End $To -sender USER@DOMEN | ForEach { 
        # Sent E-mails 
        If ($_.EventId -eq "RECEIVE" -and $_.Source -eq "STOREDRIVER")
        {
            $intSent++
            $intSentSize += $_.TotalBytes
        }
          
        # Received E-mails 
        If ($_.EventId -eq "DELIVER")
        {
            $intRec++
            $intRecSize += $_.TotalBytes
        }
    }

    $props = [ordered]@{   Date=$From
                           Sent=$intSent
                           SentSizeMB=[Math]::Round($intSentSize/1MB, 0)
                           Recived=$intRec
                           RecivedSizeMB=[Math]::Round($intRecSize/1MB, 0)
                           TotalPerDayInMB=[Math]::Round(($intRecSize+$intSentSize)/1MB, 2)
                           TotalPerDayInGB=[Math]::Round(($intRecSize+$intSentSize)/1GB, 2)
                        }

    $obj = New-Object -TypeName PSObject -Property $props

    $MailPerDay += $obj

    $TotalSent += $intSentSize
    $TotalRec += $intRecSize
} While ($To -lt (Get-Date)) 

$MailPerDay | ft

Write-Host "всего отправлено за отчетный период $([Math]::Round( $TotalSent/1GB, 2)) гигабайт"
Write-Host "всего получено за отчетный период   $([Math]::Round(  $TotalRec/1GB, 2)) гигайбайт"
Write-Host "всего получено и отправлено за период $([Math]::Round( ($TotalSent + $TotalRec)/1GB, 2)) гигабайт"
 
версия Exchange 2016 если чо. Поменял так же Get-TransportServer =>> Get-TransportService
 
Стоп!
это скрипт - пример, от куда я брал для попыток посчитать для одного ящика.
Скрипт работает, Exchange2013, проблема то не в посчитать всю почту прошедшую через коннектор!
Надо посчитать объём для одного ящика за месяц.
посчитать сколько писем (количество) для одного ящика - нет проблем.
Надо, посчитать для одного ящика объём писем в мегабайтах\гигабайтах.
 
Стоп!
это скрипт - пример, от куда я брал для попыток посчитать для одного ящика.
Скрипт работает, Exchange2013, проблема то не в посчитать всю почту прошедшую через коннектор!
Надо посчитать объём для одного ящика за месяц.
посчитать сколько писем (количество) для одного ящика - нет проблем.
Надо, посчитать для одного ящика объём писем в мегабайтах\гигабайтах.
я запутался немного. В оригинальной версии
$PeriodIndays = 7, если за месяц надо то как я понимаю надо 30 поставить.

Укажите -sender
у меня вроде работает, че то показывает

Код:
#### Variables #####
# период за который будем смотреть статистику, считается от сегодня
$PeriodIndays = 7
# дата по которую смотрим, должна быть меньше чем стартовая
$EndPeriod = Get-date -hour 0 -minute 0 -second 0
# если пишешь вручную помни что дата задается наоброт ММ/ДД/ГГГГ  тоесть "09/5/2016"
$StartPeriod = ($EndPeriod).AddDays( -$PeriodIndays )



####################################################################################
$From = $StartPeriod
$To = $EndPeriod

[Int64] $intSent = 0
[Int64] $intRec = 0
[Int64] $intSentSize = 0
[Int64] $intRecSize = 0
$Total = 0
$TotalSent = 0
$TotalRec  = 0

$MailPerDay = @()
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010

Do {
    $From = $From.AddDays(1)
    $To = $From.AddDays(1)

    $intSent = $intRec = $intSentSize =  $intRecSize = 0

    (Get-TransportService) | Get-MessageTrackingLog -ResultSize Unlimited -Start $From -End $To -sender USER@DOMEN | ForEach {
        # Sent E-mails
        If ($_.EventId -eq "RECEIVE" -and $_.Source -eq "STOREDRIVER")
        {
            $intSent++
            $intSentSize += $_.TotalBytes
        }
         
        # Received E-mails
        If ($_.EventId -eq "DELIVER")
        {
            $intRec++
            $intRecSize += $_.TotalBytes
        }
    }

    $props = [ordered]@{   Date=$From
                           Sent=$intSent
                           SentSizeMB=[Math]::Round($intSentSize/1MB, 0)
                           Recived=$intRec
                           RecivedSizeMB=[Math]::Round($intRecSize/1MB, 0)
                           TotalPerDayInMB=[Math]::Round(($intRecSize+$intSentSize)/1MB, 2)
                           TotalPerDayInGB=[Math]::Round(($intRecSize+$intSentSize)/1GB, 2)
                        }

    $obj = New-Object -TypeName PSObject -Property $props

    $MailPerDay += $obj

    $TotalSent += $intSentSize
    $TotalRec += $intRecSize
} While ($To -lt (Get-Date))

$MailPerDay | ft

Write-Host "всего отправлено за отчетный период $([Math]::Round( $TotalSent/1GB, 2)) гигабайт"
Write-Host "всего получено за отчетный период   $([Math]::Round(  $TotalRec/1GB, 2)) гигайбайт"
Write-Host "всего получено и отправлено за период $([Math]::Round( ($TotalSent + $TotalRec)/1GB, 2)) гигабайт"
А что дает -sender USER@DOMEN ?
 
Давайте всё забудем? :)

Извиняюсь, если я всех запутал!

Теперь задача:
есть общий ящик.
надо посчитать в мегабайтах сколько через него получили за месяц и сколько через него отправили за месяц.
 
Я основывался на этом синтаксисе
Get-MessageTrackingLog -ResultSize Unlimited -Start "3/28/2015 8:00AM" -End "3/28/2015 5:00PM" -EventId "Fail" -Sender "pat@contoso.com"
хм а если сендер не пользователь. тогда не вся почта будет учтена. Да. Косяк..
 
мегабайтах сколько через него получили за месяц и сколько через него отправили за месяц.
то есть получается нам интересна почта где -sender 'общий ящик' и -recepient 'общий ящик' ?:rolleyes: И это = вся принятая и полученная почта на этот ящик ?
 
тогда будет посчитано вместе входящий и исходящий трафик.
я думал, что как-то так для входящих
(Get-MessageTrackingLog -EventID "RECEIVE" -Start (Get-Date).AddDays(-30) -Recipients "mail@domen.ru" -ResultSize unlimited).Count
и как-то так для исходящих
(Get-MessageTrackingLog -EventID "SEND" -Start (Get-Date).AddDays(-30) -Recipients "mail@domen.ru" -ResultSize unlimited).Count
но, это только для количества писем.
не то что я хочу.
 
это штуки получается а нужны килограммы
 
Может этот командлет умеет? Сам не проверял еще
Get-MailTrafficReport -StartDate 12/12/2015 -EndDate 12/12/2015 -Direction Outbound | Format-Table Domain,Date,EventType,Action,MessageCount

 
Может этот командлет умеет? Сам не проверял еще
Get-MailTrafficReport -StartDate 12/12/2015 -EndDate 12/12/2015 -Direction Outbound | Format-Table Domain,Date,EventType,Action,MessageCount

это для exchange online же
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх Низ