none
Статистика по ящикам в exchange RRS feed

  • Вопрос

  • Всем привет, подскажите есть cmd-let

    Get-MessageTrackingLog

    Мне нужно что бы он выдал количество писем за определеный интервал, например за весь 2015 год.

    Но он выводит каждое письмо построчно, как доработать запрос что бы он выдал только количество (цифру)?

    Get-MessageTrackingLog -Server servername -Start "01/01/2016 00:00:00" -End "13/10/2016 00:00:00" -Sender "vasya@domain.ru"

    14 октября 2016 г. 9:10

Ответы

  • Все, всем спасибо, сам нашел...

    Если кому интересно, вот:

    Get-MessageTrackingLog -EventId Send -Server ServerName -Start "10/05/2016 00:00:00" -End "10/07/2016 00:00:00" -Sender "vasya@domain.ru" | Measure-Object -line

    Если выполнить без | Measure-Object -line, то он выдаст строки с письмами, а если с | Measure-Object -line то он их сосчитает.

    14 октября 2016 г. 10:50

Все ответы

  • Посмотрите как реализовано в скрипте:

    https://gallery.technet.microsoft.com/office/f2af711e-defd-476d-896e-8053aa964bc5

    14 октября 2016 г. 9:16
  • Мне нужно что бы он выдал количество писем за определеный интервал, например за весь 2015 год.


    Не совсем по теме. Вы время хранения трекинг логов меняли? По умолчанию они хранятся месяц, либо по достижению 1000Mb, опять же по умолчанию. Если не меняли, статистики за 2015 год и почти весь 2016, кроме последнего месяца вам не увидеть.

    Посмотреть можно так:

    Get-TransportService |fl *messagetrackinglog*

    14 октября 2016 г. 9:44
  • Если честно не совсем понимаю, есть у меня ящик в нем хранятся письма, причем они хранятся с информацией (от кого, когда, текст письма, и тд. и тп.)

    Мне нужно как то выцепить количество писем в заданном интервале.

    14 октября 2016 г. 9:58
  • Либо вот

    #### Variables #####
    # период за который будем смотреть статистику, считается от сегодня
    $PeriodIndays = 7
    # если пишешь вручную помни что дата задается наоброт ММ/ДД/ГГГГ  тоесть "09/5/2016"
    $StartPeriod = (Get-Date).AddDays( -$PeriodIndays )
    # дата по которую смотрим, должна быть меньше чем стартовая
    $EndPeriod = $StartPeriod.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-TransportServer) | Get-MessageTrackingLog -ResultSize Unlimited -Start $From -End $To | 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 "just sent over the reporting time $([Math]::Round( $TotalSent/1GB, 2)) GB"
    Write-Host "all received during the reporting time   $([Math]::Round(  $TotalRec/1GB, 2)) GB"
    Write-Host "all received and sent over the time $([Math]::Round( ($TotalSent + $TotalRec)/1GB, 2)) GB"


    14 октября 2016 г. 10:00
  • Тогда вам нужно использовать совсем другой командлет, а именно Get-MailboxStatistics.

    В этом топике есть примеры команд: https://social.technet.microsoft.com/Forums/en-US/531ea935-ccb3-48ad-a5a5-468aeaf08090/list-the-size-of-all-mailboxes-in-2013?forum=exchangesvrgeneral

    14 октября 2016 г. 10:02
  • В Get-MailboxStatistics нет таких параметров, там есть статистика по количеству писем, по объему ящика но количество писем за 2015 год не вытащиш...

    Если я выполняю команду Get-MessageTrackingLog -Server servername -Start "01/01/2016 00:00:00" -End "13/10/2016 00:00:00" -Sender "vasya@domain.ru"

    То он в командной строке вываливает перечисление писем за заданный интервал, а мне нужно что бы он показал цифру!

    14 октября 2016 г. 10:14
  • Ну дак добавьте  | Group-Object Sender

    Чтобы получилось вот так:

    Get-MessageTrackingLog -Server servername -Start "01/01/2016 00:00:00" -End "13/10/2016 00:00:00" -Sender "vasya@domain.ru" | Group-Object Sender

    14 октября 2016 г. 10:21
  • Зачем мне делать сортировку по Sender, если Sender уже указан в единственном экземпляре?
    14 октября 2016 г. 10:27
  • Все, всем спасибо, сам нашел...

    Если кому интересно, вот:

    Get-MessageTrackingLog -EventId Send -Server ServerName -Start "10/05/2016 00:00:00" -End "10/07/2016 00:00:00" -Sender "vasya@domain.ru" | Measure-Object -line

    Если выполнить без | Measure-Object -line, то он выдаст строки с письмами, а если с | Measure-Object -line то он их сосчитает.

    14 октября 2016 г. 10:50