locked
Cuantos correos internos en mi Exchange 2010 RRS feed

  • Pregunta

  • Estimados,

    Necesito sacar el resultado de los correos tanto entrada como salida, de un mes.

    Me explico:

    Tengo Exchange Server 2010 SP3 CU5.

    Tengo 4552 buzones.

    Necesito saber cuantos correos recibieron hoy esos 4552 buzones y cuantos correos enviaron esos 4552 buzones.

    Ademas llegar al final del mes y decir, bueno al mes los 4552 buzones enviaron XXXXX mail y recibieron XXXXX mail.

    Saludos,


    Edwin Duran Ospina Si la respuesta ha Colaborado con tu solución, favor marcarla como correcta.

    jueves, 31 de marzo de 2016 14:01

Respuestas

  • Gracias, Carlos Martinez Tercero por la respuesta.

    Genial y buen punto.

    Ahora que me diste esa informacion, comparto con ustedes dos lo siguiente:

    Tengo el siguiente Scritp en el cual estan incluidos los comandos que ustedes mencionan:

    # Initialize some variables used for counting and for output
    $From = Get-Date "20/11/2011"
    $To = $From.AddDays(1)
     
    [Int64] $intSent = $intRec = 0
    [Int64] $intSentSize = $intRecSize = 0
    [String] $strEmails = $null
     
    Write-Host "DayOfWeek,Date,Sent,Sent Size,Received,Received Size" -ForegroundColor Yellow
     
    Do
    {
        # Start building the variable that will hold the information for the day
        $strEmails = "$($From.DayOfWeek),$($From.ToShortDateString()),"
     
        $intSent = $intRec = 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
            }
        }
     
         $intSentSize = [Math]::Round($intSentSize/1MB, 0)
        $intRecSize = [Math]::Round($intRecSize/1MB, 0)
     
        # Add the numbers to the $strEmails variable and print the result for the day
        $strEmails += "$intSent,$intSentSize,$intRec,$intRecSize"
        $strEmails
     
        # Increment the From and To by one day
        $From = $From.AddDays(1)
        $To = $From.AddDays(1)
    }
    While ($To -lt (Get-Date))
    #While ($To -lt (Get-Date "01/12/2011"))

    Ahora mi tema es que me arroja el resultado pero, no es de una forma automatica y tampoco bien presentado:

    De todas manera chicos, gracias por las respuestas, estare esperando algunas mas, y de igual manera el Script lo voy a escrbir con salida HTML y que se genere un reporte mensual.

    Gracias de nuevo a los dos.

    Saludos,


    Edwin Duran Ospina Si la respuesta ha Colaborado con tu solución, favor marcarla como correcta.

    jueves, 31 de marzo de 2016 15:40

Todas las respuestas

  • Buenas Edwin,

    Esa información se obtiene del tracking log, podras consultar los datos que estén disponibles, por defecto son 30 días.

    Con estás consultas te pueden servir para analizar los datos que necesitas con las fechas necesarias:

    Get-MessageTrackingLog -start “10/22/2011 00:00:00” -end “11/21/2011 11:59:00” | group-object -Property Sender

    Get-MessageTrackingLog -start “10/22/2011 00:00:00” -end “11/21/2011 11:59:00” | select-object -ExpandProperty Recipients | group-object

    Un saludo.

    jueves, 31 de marzo de 2016 15:01
  • Buenas,

    La respuesta de Carlos es correcta, sólo matizar que teniendo ese número de buzones es posible que tengas más de un servidor por lo que deberías añadir Get-TransportService | Get-MessageTrackingLog ... Para obtener los datos de todos en un solo comando.

    Saludos

    jueves, 31 de marzo de 2016 15:06
  • Estimado,

    GermanM.

    Gracias por la respuesta.

    Mira en el enunciado yo informe que tengo Exchange 2010 con SP3 y CU5. El Get-TransportService viene en la version Exchange 2013 y Exchange 2016. por lo tanto aqui no podre ejecutarlo.

    Mil gracias de todas maneras por el apoyo.


    Edwin Duran Ospina Si la respuesta ha Colaborado con tu solución, favor marcarla como correcta.

    jueves, 31 de marzo de 2016 15:26
  • Gracias, Carlos Martinez Tercero por la respuesta.

    Genial y buen punto.

    Ahora que me diste esa informacion, comparto con ustedes dos lo siguiente:

    Tengo el siguiente Scritp en el cual estan incluidos los comandos que ustedes mencionan:

    # Initialize some variables used for counting and for output
    $From = Get-Date "20/11/2011"
    $To = $From.AddDays(1)
     
    [Int64] $intSent = $intRec = 0
    [Int64] $intSentSize = $intRecSize = 0
    [String] $strEmails = $null
     
    Write-Host "DayOfWeek,Date,Sent,Sent Size,Received,Received Size" -ForegroundColor Yellow
     
    Do
    {
        # Start building the variable that will hold the information for the day
        $strEmails = "$($From.DayOfWeek),$($From.ToShortDateString()),"
     
        $intSent = $intRec = 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
            }
        }
     
         $intSentSize = [Math]::Round($intSentSize/1MB, 0)
        $intRecSize = [Math]::Round($intRecSize/1MB, 0)
     
        # Add the numbers to the $strEmails variable and print the result for the day
        $strEmails += "$intSent,$intSentSize,$intRec,$intRecSize"
        $strEmails
     
        # Increment the From and To by one day
        $From = $From.AddDays(1)
        $To = $From.AddDays(1)
    }
    While ($To -lt (Get-Date))
    #While ($To -lt (Get-Date "01/12/2011"))

    Ahora mi tema es que me arroja el resultado pero, no es de una forma automatica y tampoco bien presentado:

    De todas manera chicos, gracias por las respuestas, estare esperando algunas mas, y de igual manera el Script lo voy a escrbir con salida HTML y que se genere un reporte mensual.

    Gracias de nuevo a los dos.

    Saludos,


    Edwin Duran Ospina Si la respuesta ha Colaborado con tu solución, favor marcarla como correcta.

    jueves, 31 de marzo de 2016 15:40
  • Buenas Edwin,

    El cmdlet sería entonces Get-TransportServer, de memoria, pensaba que lo cambiaron de 2007 a 2010. De hecho Get-TransportServer es válido en versiones posteriores pero sale el warning de que será descontinuado.

    Saludos

    jueves, 31 de marzo de 2016 15:44
  • Excelente GermanM.

    claro asi lo tengo en el Script:

    $intSent = $intRec = 0
        (Get-TransportServer) | Get-MessageTrackingLog -ResultSize Unlimited -Start $From -End $To | ForEach {
            # Sent E-mails
            If ($_.EventId -eq "RECEIVE" -and $_.Source -eq "STOREDRIVER")

    Validare como tengo que contruirlo para sacar el reporte en HTML.

    Saludos,


    Edwin Duran Ospina Si la respuesta ha Colaborado con tu solución, favor marcarla como correcta.

    jueves, 31 de marzo de 2016 16:03
  • Ok, yo personalmente quitaría el foreach del último pipe. Porque estas consultando en los logs de transporte todos los eventos y los estas filtrando a posteriori con esos condicionales en el bucle, no es optimo puesto que son paramentos del Get-MessageTrackingLog.

    Saludos

    jueves, 31 de marzo de 2016 16:20