viernes, 8 de junio de 2018

Cantidad de correos enviados y recibidos Exchange

Esta vez la necesidad es sacar un informe de la cantidad de correos enviados y recibidos en una plataforma Exchange, el cual tiene 3 CAS (Client Access services ), se cuenta con 8 servidores, los cuales se listaran en un archivo que llamaremos servidores.txt

El contenido del archivo quedaria algo parecido a esto:

Servidor1
Servidor2
Servidor3
Servidor4
Servidor5
Servidor6
Servidor7
Servidor8

Se puede utilizar el nombre, el FQDN, o la IP.

Ahora el sencillo Script abajo es una mezcla de VB y powershell
En una primera parte, y la que mas consume lineas de codigo, se crea un calendario GUI para seleccionar la fecha de inicio de la busqueda para realizar el conteo, y en la segunda parte se realiza la captura de datos, organizacion, y almacenamiento.

el resultado sera un archivo con el nombre InformeMensualEXcFECHA.txt



$ErrorActionPreference = "Continue";
 
#Primera parte, calendario
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$form = New-Object Windows.Forms.Form
$form.Text = 'Seleccione la fecha de inicio'
$form.Size = New-Object Drawing.Size @(250,230)
$form.StartPosition = 'CenterScreen'

$calendar = New-Object System.Windows.Forms.MonthCalendar
$calendar.ShowTodayCircle = $false
$calendar.MaxSelectionCount = 1
$form.Controls.Add($calendar)

$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Point(38,165)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = 'OK'
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)

$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Point(113,165)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = 'Cancel'
$CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $CancelButton
$form.Controls.Add($CancelButton)

$form.Topmost = $true
$result = $form.ShowDialog()
$servers= Get-Content servidores.txt;
$reportfile = "InformeMensualEXc_$(get-date -format dd_MM_yyyy).txt";

#Si en el calendario se presiona OK 
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
$date = $calendar.SelectionStart

$fecha= "$($date.ToShortDateString())"
$time = Get-Date
Add-Content $reportfile $time;
 
#Segunda parte, Query y almacenado de datos
foreach ($server in $servers)
{

#Cambiar *@Dominio.com" por el dominio del correo propio
$conteo=get-messagetrackinglog -ResultSize unlimited -server $server -EventID "RECEIVE" -Start "$fecha 00:00:00" | where {$_.Recipients -like "*@Dominio.com" } | Format-table Recipients
$rect=$conteo.Count
$dataRow = "Recibidos en $server $rect";
Add-Content $reportfile $dataRow;

#Cambiar *@Dominio.com" por el dominio del correo propio
 
$conteo1=get-messagetrackinglog -ResultSize unlimited -server $server -EventID "SEND" -Start "$fecha 00:00:00" | where {$_.Sender -like "*@Dominio.com" }  | Format-table Sender
$sendt=$conteo1.Count
$dataRow1 = "Enviados en $server $sendt";
Add-Content $reportfile $dataRow1;
}
}


Espero a alguno le sea util este post
¡Hasta la proxima!


Si te fue útil la información "HAZ CLICK EN LA PUBLICIDAD DE GOOGLE"

 visitando nuestros anunciantes, agradeces nuestro trabajo... 

No hay comentarios:

Publicar un comentario

Comentar tambien es agradecer