Uso del cmdlet de PowerShell Get-MailDetailSpamReport | Ver y exportar informes de correo no deseado | Parte 2#3
El cmdlet PowerShell Get-MailDetailSpamReport se creó como una herramienta que simplifica el proceso de visualización y "descarga" de información almacenada en el archivo de registro de spam de Exchange Online. El archivo de registro de spam de Exchange Online sirve como un almacén que contiene la documentación de cada uno de los "eventos de correo no deseado" relacionados con el flujo de correo entrante y saliente.
En el artículo actual, revisamos cómo podemos ampliar y mejorar las capacidades del cmdlet Exchange Online PowerShell: Get-MailDetailSpamReport.
Serie de artículos | Usando Get-MailDetailSpamReport | Ver y exportar informes de correo no deseado
- Informe de correo no deseado de Office 365 mediante PowerShell | Introducción
- Uso del cmdlet de PowerShell Get-MailDetailSpamReport | Ver y exportar informes de correo no deseado (este artículo)
- Cómo utilizar el script de PowerShell para el informe de correo no deseado
En la primera parte, revisamos los ejemplos básicos de sintaxis de PowerShell que se pueden usar con el cmdlet Get-MailDetailSpamReport.
En la segunda parte, revisaremos el uso más avanzado del cmdlet Get-MailDetailSpamReport, mediante el uso de un script de PowerShell que nos ayudará a realizar una secuencia de tareas y a generar varios tipos de informes de correo no deseado (mediante consultas de búsqueda).
Parte 1. Uso básico del cmdlet Get-MailDetailSpamReport
Pantalla: información del informe de correo no deseado
Para obtener el informe de correo no deseado, todo lo que tenemos que hacer es escribir el nombre del cmdlet Get-MailDetailSpamReport sin ningún otro parámetro obligatorio.
Por ejemplo:
Get-MailDetailSpamReport | FT Date,Subject,Direction,SenderAddress,RecipientAddressSalida de PowerShell Get-MailDetailSpamReport:
PS C:\> Get-MailDetailSpamReport | FT Date,Domain,Subject,Direction,SenderAddress,RecipientAddress,EventType,MessageSize,MessageId,MessageTraceId
Date Domain Subject Direction SenderAddress RecipientAddress
---- ------ ------- --------- ------------- ----------------
2017-09-28 1:42:16 PM o365info.com INBOX SMTP,RDP,UNLIMITED WEBMAIL,FRESH LEADS,FUND TRANSFER TO ALL BANKS IN USA..all available now. Inbound ojomade200@gmail.com alice@o365info.com
2017-09-28 1:42:25 PM o365info.com Undeliverable: INBOX SMTP,RDP,UNLIMITED WEBMAIL,FRESH LEADS,FUND TRANSFER TO ALL BANKS IN USA..all available now. Outbound postmaster@o365info.com eyal@o365info.com
2017-09-28 1:42:25 PM o365info.com Undeliverable: INBOX SMTP,RDP,UNLIMITED WEBMAIL,FRESH LEADS,FUND TRANSFER TO ALL BANKS IN USA..all available now. Outbound postmaster@o365info.com ojomade200@gmail.com
2017-09-28 7:50:37 PM o365info.com Scan Data Outbound documents@o365info.com u003eisabely@o365info.com
2017-09-28 8:24:52 PM o365info2.onmicrosoft.com Cloud App Security: suspicious administrative activity detected Inbound no-reply@cloudappsecurity.com admin@o365info2.onmicrosoft.com
2017-09-29 12:41:46 AM o365info.com RE: ANITA ROBERTS ( DEVCOIN CRYPTOCURRENCY ) Inbound anita.roberts@devcoin.com eyal@o365info.com
2017-09-29 2:39:59 AM o365info.com Scan Data Outbound scanner@o365info.com john@o365info.com
2017-09-29 7:02:53 PM o365info.com Become a Target Content Curator Today! Inbound target@affiliates.acceleration-partners.com eyal@o365info.com
2017-09-29 11:31:00 PM mottie.com Invoice Outbound Lynne@mottie.com eyal@o365info.com
2017-09-30 5:16:18 AM alwasmiwater.com BENEFICIARY PAYMENT ADVICE Outbound accounts@alwasmiwater.com eyal@o365info.com
2017-09-30 6:38:37 AM o365info.com Top On Web Inbound info@webdeta.biz eyal@o365info.com
2017-09-30 7:07:23 AM eenvoudigonline.be Invoice Outbound Kaye@eenvoudigonline.be whiskers@o365info.com
2017-09-30 8:04:06 AM timberlineroof.net Invoice Outbound Millard@timberlineroof.net job@o365info.com
2017-09-30 9:24:07 AM o365info.com Invitation: UNITED BANK OF AFRICA @ Friday, 29 September 2017 Inbound onyema.onye@yahoo.com alice@o365info.com
2017-10-01 7:43:34 PM interia.com QUOTATION doc20171002 Outbound tina.anish@interia.com eyal@o365info.com
2017-10-02 4:09:56 AM o365info.com Hi Inbound Katherineqvs@cynjin.com ht@o365info.com
2017-10-02 8:24:58 AM o365info.com What's up Inbound Violetteeqog@valedotijuco.com.br ui@o365info.com
2017-10-02 10:36:54 PM o365info.com Hey, Sweety Inbound Evelinann@fibertel.com.ar ui@o365info.com
2017-10-03 1:15:58 AM o365info.com Emailed Invoice - 822287 Outbound Muriel@o365info.com paramedi@o365info.com
2017-10-03 2:19:17 AM o365info.com Hey, Sweety Inbound Evelinacmgfl@telkom.net.id ht@o365info.comExporte la información del informe de correo no deseado a un archivo CSV.
Para exportar el resultado del informe de correo no deseado a un archivo CSV, podemos utilizar la siguiente sintaxis.
Sintaxis del comando de PowerShell:
Get-MailDetailSpamReport | Export-CSV <Path> -NoTypeInformation -Encoding utf8Ejemplo de comando de PowerShell:
Get-MailDetailSpamReport | Export-CSV c:\temp\"spam mail report.CSV" -NoTypeInformation -Encoding UTF8Exportar información del informe de correo no deseado a un archivo CSV | Intervalo de fechas específico
En este escenario, queremos exportar el resultado del informe de correo no deseado a un archivo CSV, pero esta vez. Queremos definir un rango de fechas específico para el informe de correo no deseado.
Para definir el rango de fechas requerido, utilizamos los parámetros -StartDate y -EndDate.
Sintaxis del comando de PowerShell:
Get-MailDetailSpamReport -StartDate <Date> -EndDate <Date>
Ejemplo de comando de PowerShell:
Get-MailDetailSpamReport -StartDate 09/01/2017 -EndDate 10/01/2017Prefijo breve: remitente de correo no deseado versus receptor de correo no deseado
El archivo de registro de spam incluye muchas "propiedades" de cada evento de correo spam.
Una de las distinciones más importantes con las que debemos estar familiarizados es el evento en el que alguna entidad (representada como dirección de correo electrónico) envía correo no deseado. El significado es: el lado que tiene la regla del "atacante", frente a la entidad del usuario o el destinatario que recibe los correos electrónicos no deseados, es decir, la víctima del ataque de correo no deseado.
La implementación de esta distinción se implementa mediante el uso de los siguientes parámetros de PowerShell:
- El parámetro de PowerShell -SenderAddress, define la entidad que envía el correo spam
- El parámetro de PowerShell -RecipientAddress define la entidad que recibe el correo no deseado.
Obtener informe de correo no deseado | Filtrar resultados: receptor de correo spam específico
En este escenario, queremos obtener información sobre todos los eventos de correo no deseado, en los que el correo no deseado se envió (recibió) a una "dirección de correo electrónico de destino" específica.
Para definir la identidad del "receptor", utilizamos el parámetro de PowerShell -RecipientAddress y proporcionamos la dirección de correo electrónico del destinatario de destino.
Sintaxis del comando de PowerShell:
Get-MailDetailSpamReport -RecipientAddress <Sender E-mail address>Ejemplo de comando de PowerShell:
Get-MailDetailSpamReport -RecipientAddress "john@o365info.com"Obtener informe de correo no deseado | Filtrar resultados | Remitente de correo spam específico
En este escenario, queremos obtener información sobre todos los eventos de correo no deseado, en los que el correo no deseado se envió desde (enviado por) una dirección de correo electrónico específica.
Para definir la identidad del "remitente", utilizamos el parámetro de PowerShell -SenderAddress y proporcionamos la dirección de correo electrónico del remitente.
Sintaxis del comando de PowerShell:
Get-MailDetailSpamReport -SenderAddress <Sender E-mail address>Ejemplo de comando de PowerShell:
Get-MailDetailSpamReport -SenderAddress "john@o365info.com"Obtener informe de correo no deseado | Filtrar resultados | RECEPTOR de correo spam que su dirección de correo electrónico incluye un sufijo de nombre de dominio específico
En este escenario, queremos obtener información sobre los correos electrónicos no deseados que se enviaron a destinatarios específicos (direcciones de correo electrónico de destino). Tenga en cuenta que esta vez estamos interesados en "múltiples destinatarios" frente al parámetro predeterminado de PowerShell -RecipientAddress que se relaciona con una única entidad del destinatario.
Nuestro deseo es obtener información sobre todos los correos electrónicos no deseados que se enviaron a los destinatarios y cuyas direcciones de correo electrónico incluyen un sufijo de nombre de dominio específico.
Por ejemplo, obtenga información sobre todos los correos electrónicos no deseados que se enviaron a los destinatarios de nuestra organización, es decir, destinatarios cuya dirección de correo electrónico incluye el sufijo del nombre de dominio de nuestra organización.
En este escenario, utilizamos el parámetro de PowerShell “Dónde-Objeto” que filtra la información según la consulta de búsqueda que definimos. En nuestro escenario, la sintaxis de la consulta de búsqueda es:
{$_.RecipientAddress -like "*@<Domain name suffix>*"}Sintaxis del comando de PowerShell:
Get-MailDetailSpamReport -StartDate <Date> -EndDate <Date> | Where-Object {$_.RecipientAddress -like "*@<Domain name suffix>*"} | Select SenderAddress,RecipientAddress ,DateEjemplo de comando de PowerShell:
Get-MailDetailSpamReport -StartDate $StartDate -EndDate $EndDate | Where-Object {$_.RecipientAddress -like "*@o365info.com*"} | Select SenderAddress,RecipientAddress ,DateObtener informe de correo no deseado | Filtrar resultados | REMITENTES de correo spam cuya dirección de correo electrónico incluye un sufijo de nombre de dominio específico
Este escenario es similar al escenario anterior, pero esta vez; queremos obtener información sobre todos los eventos de correo electrónico no deseado, que se relacionan con los "remitentes de correo no deseado" (la entidad que envía el correo no deseado) que utilizan correo electrónico con un sufijo de nombre de dominio específico.
Sintaxis del comando de PowerShell:
Get-MailDetailSpamReport -StartDate <Date> -EndDate <Date> | Where-Object {$_.SenderAddress -like "*@<Domain name suffix>*"} | Select SenderAddress,RecipientAddress,DateEjemplo de comando de PowerShell:
Get-MailDetailSpamReport -StartDate $StartDate -EndDate $EndDate | Where-Object {$_.SenderAddress -like "*@o365info.com*"} | Select SenderAddress,RecipientAddress,DateParte 2. Uso más avanzado del cmdlet Get-MailDetailSpamReport
Conceptos generales del uso del cmdlet Get-MailDetailSpamReport
El término "evento de correo no deseado"
A lo largo del artículo actual, mencionaremos el término "evento de correo no deseado" un par de veces. Este término no es un término formal, sino el término que uso.
El término "evento de correo no deseado" define un registro en el archivo de registro de correo no deseado de Exchange Online, que incluye documentación de una de las dos opciones:
- Correo no deseado que fue enviado desde (enviado por) una entidad específica (dirección de correo electrónico).
- Correo no deseado que fue recibido (enviado a) una entidad específica (dirección de correo electrónico).
El término "registro de eventos de correo no deseado" incluye las propiedades de los eventos, como la fecha, el ID del mensaje, el asunto del mensaje, etc.
Optimice la forma en que utilizamos los rangos de fechas
Hasta donde yo sé, en este momento, no hay información formal sobre el rango de tiempo predeterminado que utiliza el cmdlet de PowerShell Get-MailDetailSpamReport.
Nota: No sé cuál es el rango máximo de fechas de eventos de correo no deseado que se guardan en el archivo de registro de correo no deseado de Exchange Online. Según mi experiencia, podemos "obtener" información sobre eventos de correo no deseado dentro de rangos de 30 días o más.
Para poder definir ese rango de fechas exacto, podemos agregar al cmdlet básico Get-MailDetailSpamReport de PowerShell los parámetros -StartDate y -EndDate, que nos permiten establecer el rango de fechas exacto.
Por ejemplo:
Get-MailDetailSpamReport -StartDate 09/01/2017 -EndDate 10/01/2017En el artículo actual, utilizaré una personalización de los "Parámetros del rango de fechas". Usaremos una fórmula simple de PowerShell, que define el rango de fechas que se medirá en "unidades de día".
En nuestros ejemplos, definimos un rango de fechas de 30 días.
Nota: Con esta sencilla fórmula de PowerShell, puede crear fácilmente la personalización de la fecha límite requerida para sus necesidades específicas.
El valor de la fecha de finalización
En lugar de proporcionar manualmente el valor para la "Fecha de finalización", utilizamos una variable que almacena los resultados que obtenemos del cmdlet de PowerShell Get-Date.
El cmdlet de PowerShell Get-Date está configurado para "obtener" la fecha actual.
El valor de la fecha de inicio
En lugar de proporcionar manualmente el valor de la "Fecha de inicio", utilizamos una variable que almacena los resultados de una fórmula simple. La fórmula que utilizamos, toma la fecha actual y resta a esta fecha el número de días que especificamos.
El resultado de esta fórmula será la "Fecha de inicio".
Un ejemplo de las dos variables que usaremos a lo largo de este artículo actual es:
$EndDate = Get-Date
$StartDate = $EndDate.Adddays(-30)En este ejemplo, definimos un rango de fechas de "30 días".
En el siguiente diagrama podemos ver un ejemplo del concepto “intervalo de fechas”.
Vuelque el contenido del archivo de registro de correo no deseado de Exchange Online
En esta sección, revisamos cómo "volcar" el contenido del archivo de registro de correo no deseado de Exchange Online, pero el punto es un truco que utilizamos y que nos ayudará a evitar la limitación predeterminada del cmdlet Get-MailDetailSpamReport de PowerShell, por lo que Podremos exportar (volcar) todo el contenido del archivo de registro de correo no deseado de Exchange Online, para los rangos de fechas que definamos.
Exportar informes de correo no deseado | TODOS los eventos de correo no deseado | últimos 30 días
Nuestra misión: exportar todos los eventos de correo no deseado existentes de los últimos 30 días.
Tenga en cuenta que en este escenario, no queremos utilizar ningún tipo de filtro ni definir una consulta de búsqueda específica. En su lugar, solo queremos "volcar" toda la información del archivo de registro de correo no deseado de Exchange Online a un archivo local.
Configuración predeterminada de Exchange Online y limitación de datos secretos
Cuando solicitamos a Exchange Online que "obtenga" información almacenada en el archivo de registro del centro de datos, el pequeño secreto que la mayoría de nosotros desconoce es que, de forma predeterminada, Exchange Online no " voluntario” para brindarnos el 100% de la información.
Incluso cuando proporcionamos un "intervalo de fechas" definido, Exchange Online está configurado para proporcionar una "cantidad restringida de datos".
La razón de esta limitación incorporada es probablemente algún tipo de "mecanismo de protección del servidor" que se creó para evitar cargas excesivas del servidor Exchange Online o evitar cargas excesivas de las líneas de comunicación limitando la cantidad de datos que fluyen desde la "nube".
La unidad de medida de datos: la página
La forma que utilizamos para medir la "cantidad de datos" que proporciona el servidor Exchange Online, se define mediante una unidad de medida denominada "página".
Cada "página" puede contener el número máximo de "filas".
En caso de que necesitemos obtener más información que la que se puede almacenar en una sola "página", debemos "instruir" a Exchange Online para que nos proporcione "páginas" adicionales.
Límite máximo y predeterminado del contenido de la página
- El número predeterminado de “eventos” (filas de registro) que aparecen en una sola página es - 1000.
- El número máximo de “eventos” (filas de registro) que pueden aparecer en una sola página es - 5000.
Límite máximo y predeterminado de páginas
- El número predeterminado de páginas es - 1.
- El número máximo de páginas que Exchange Online puede proporcionar es: 1000.
Si desea hacer el partido, los resultados máximos que Exchange Online puede proporcionarnos son: 5 millones de eventos (5.000.00000).
Exchange Online y la configuración predeterminada del cmdlet Get-MailDetailSpamReport
Con respecto al resultado que obtenemos del cmdlet de PowerShell Get-MailDetailSpamReport, la configuración predeterminada está configurada para producir "1 página" que contiene un máximo de mil líneas (1 X 1000).
En otras palabras, de forma predeterminada, el cmdlet de PowerShell Get-MailDetailSpamReport está configurado para proporcionarnos solo la "primera página" de la información existente que se almacena en el archivo de registro de correo no deseado de Exchange Online.
Para demostrar este concepto, utilicemos el siguiente escenario: Registro de correo no deseado de Exchange Online, que incluye documentación de 15 000 eventos de correo no deseado.
(El archivo de registro de correo no deseado de Exchange Online incluye: 15.000 filas).
En caso de que utilicemos el cmdlet de PowerShell Get-MailDetailSpamReport sin ningún filtro ni parámetro, Exchange Online nos “enviará” información sobre 1.000 eventos.
Un recordatorio rápido: Exchange Online está configurado para proporcionar de forma predeterminada solo una "página" y cada página está configurada de forma predeterminada para un máximo de 1000 "filas".
Esta "configuración predeterminada" podría generar problemas con la "integridad de los datos" porque no podemos ver la imagen completa y, en cambio, solo vemos una parte de toda la información.
La buena noticia es que el cmdlet de PowerShell Get-MailDetailSpamReport nos permite definir dos parámetros importantes:
- Tamaño de página: el número máximo de “eventos” (filas) que contiene cada página. El máximo de filas que puede contener una página es: 5000.
- El número de páginas: el número de páginas que “pedimos obtener”.
En nuestro escenario, en caso de que queramos obtener un “informe completo de correo no deseado” que incluya el 100 % de la información disponible, necesitaremos “gastar” la sintaxis predeterminada del comando Get-MailDetailSpamReport de PowerShell en la siguiente manera:
Get-MailDetailSpamReport -PageSize 5000 -Page 3Usar un script de PowerShell que volcará toda la información del archivo de registro de spam
Aunque esta “solución” parece una respuesta satisfactoria a nuestro problema, ¡tenemos problemas adicionales que debemos resolver!
En el escenario actual, mencioné que "sabemos" que el archivo de registro de correo no deseado de Exchange Online incluye 15.000 filas pero, en realidad, ¿cómo podemos saber realmente cuál es la cantidad de eventos que se almacenan en el archivo de registro, para que podamos ¿Realizar el ajuste necesario en la sintaxis del comando de PowerShell?
Y la respuesta es que, la mayoría de las veces, no sabemos cuál es el “número” exacto de filas (eventos) que aparecieron en el archivo de registro del servidor de Exchange Online.
Para poder afrontar este desafío, podemos utilizar un pequeño “ajuste” de PowerShell que proporcionará la solución necesaria.
La solución se implementa mediante un procedimiento de "bucle", que indicará a Exchange Online que nos proporcione los resultados requeridos, utilizando un tamaño de página de 5000 filas.
En caso de que haya información adicional en el archivo de registro de correo no deseado de Exchange Online, el “comando de bucle” de PowerShell solicita a Exchange Online que cree una “página NUEVA” que contendrá los siguientes 5000 resultados, y así sucesivamente.
Este proceso circular se ejecutará hasta que obtengamos toda la información disponible almacenada en el archivo de registro de correo no deseado de Exchange Online.
En la siguiente sección, podemos ver un ejemplo de dicha solución. El script de PowerShell realizará la siguiente secuencia de acciones:
Defina el rango de fechas como un rango de fechas de 30 días (30 días retrocediendo desde la fecha actual).
- Crear automáticamente en la unidad C: NUEVA estructura de carpetas, que servirá como contenedor para la información que se exportará.
- Los "datos" que se recopilan del "proceso de bucle" de PowerShell que recupera toda la información disponible del archivo de registro de spam de Exchange Online se guardarán en una variable denominada $SpamMailLogFileContent.
- El contenido de la variable denominada $SpamMailLogFileContent se exportará a un archivo CSV.
Exportar toda la información del archivo de registro de spam de Exchange Online | últimos 30 días
$EndDate = Get-Date
$StartDate = $EndDate.Adddays(-30)
# Define the Date format variable
$Datef = Get-Date -Format "\Da\te dd-MM-yyyy \Ti\me H-mm"
# Define variables that contain the folder names
$A20 = "C:\INFO\Spam mail Reports"
$A21 = "$A20\ALL Spam mail events - Last 30 days - $Datef"
# C:\INFO\Spam mail Reports
IF (!(Test-Path -path $A20))
{ New-Item $A20 -type directory | Out-Null }
# ALL Spam mail events - Last 30 days - <Date>
IF (!(Test-Path -path $A21))
{ New-Item $A21 -type directory | Out-Null }
# Define the variable for the exported Filename
$File1 = "Full spam mail report - All information - last 30 Days"
# Using PowerShell command that will verify that ALL the available information will be exported.
# Get the complete content of the Exchange Online spam mail Log file (all existing spam mail events in the last 30 days)
$SpamMailLogFileContent =
for ($c = 1; $c -lt 1001; $c++)
{
if ((Get-MailDetailSpamReport -StartDate $StartDate -EndDate $EndDate -PageSize 5000 -Page $c).count -gt 0)
{
Get-MailDetailSpamReport -StartDate $StartDate -EndDate $EndDate -PageSize 5000 -Page $c
}
else
{ break; }
}
# Define a variable that store the content of the Exchange Online spam log file
$ExportSpamLog = $SpamMailLogFileContent | Sort-Object -Property Date -descending
# Export information to the CSV file
$ExportSpamLog | Export-CSV $A21\"$File1.CSV" -NoTypeInformation -Encoding utf8Contar correos electrónicos no deseados enviados y recibidos | Informe de correo no deseado.
En esta sección, me gustaría demostrar cómo utilizar el cmdlet de PowerShell Get-MailDetailSpamReport para generar un tipo específico de informe de correo no deseado, que contará la cantidad de eventos de correo no deseado específicos en comparación con el estándar. salida del cmdlet de PowerShell Get-MailDetailSpamReport que muestra información sobre un evento de correo no deseado específico (los detalles sobre el evento de correo no deseado específico).
De forma predeterminada, el cmdlet de PowerShell Get-MailDetailSpamReport no "sabe" cómo contar los eventos de correo no deseado. En la sección actual, demostraremos cómo utilizar el script de PowerShell que “agregará” esta capacidad requerida.
El objetivo que buscamos lograr es contar los siguientes tipos de eventos de correo spam:
- Sumar (contar) la cantidad de correo no deseado que se recibió (envió a) una entidad específica.
- Sumar (cuenta) la cantidad de correo no deseado que fue enviado desde (Enviado por) una entidad específica.
En nuestro escenario, el término "entidad" se traduce como "dirección de correo electrónico".
La "identidad de la dirección de correo electrónico" podría ser la dirección de correo electrónico del destinatario externo (destinatario que no es una organización) o la dirección de correo electrónico de la organización destinataria.
Resumen de exportación de correo no deseado | Contar (suma) todos los correos electrónicos no deseados recibidos | Todas las direcciones de correo electrónico
En esta sección, revisamos cómo usar el script PowerShell, que generará un “informe resumido” de correo no deseado, que cuenta todos los correos electrónicos no deseados que fueron enviados a (recibidos por) cada dirección de correo electrónico que aparece en el registro de spam de Exchange Online. archivo.
El objetivo que buscamos lograr es contar los siguientes tipos de eventos de correo spam:
- Sumar (contar) la cantidad de correo no deseado que fue recibido por (enviado a) una entidad específica.
Antes de comenzar con la descripción del script de PowerShell que incluye muchas partes diferentes, me gustaría presentar la estructura básica de comandos de PowerShell que usamos para contar la cantidad de eventos de correo no deseado que recibieron (enviaron a) una dirección de correo electrónico específica.
La sintaxis básica del comando PowerShell
Antes de proporcionar la sintaxis "compleja" de PowerShell, veamos la estructura de sintaxis básica de PowerShell que debemos usar en este escenario:
$ReceiveEvents = Get-MailDetailSpamReport -RecipientAddress <E-mail address> -StartDate <StartDate> -EndDate <EndDate>
$ReceiveEventsCount = @($ReceiveEvents).count
write-host "The Number of Received spam emails is: $ReceiveEventsCount"En este escenario, el script de PowerShell implementará la siguiente secuencia de tareas:
Tarea 1: obtener información del archivo de registro de correo no deseado de Exchange Online sobre todos los eventos de correo no deseado que ocurrieron en los últimos 30 días.
El contenido del archivo de registro de spam se recupera mediante el comando de PowerShell que revivimos en la sección XXX.
Usamos la variable - $SpamMailLogFileContent como contenedor lógico, que almacenará el contenido del archivo de registro de spam.
Tarea 2: crear una lista de todas las direcciones de correo electrónico que aparecen en el archivo de registro de correo no deseado de Exchange Online.
La lista de todas las direcciones de correo electrónico del archivo de registro de spam de Exchange Online que aparece "debajo" de la columna "Receptor de correo no deseado" se crea mediante el siguiente comando de PowerShell:
$ALLSpamMailRecipients = $SpamMailLogFileContent | Group-Object -Property RecipientAddress | Sort-Object name -descending | Select-Object name,countUsamos la variable - $ALLSpamMailRecipients como contenedor lógico, que almacenará la lista de direcciones de correo electrónico.
Tarea 3: crear una jerarquía de carpetas que almacenará el informe resumido del correo no deseado exportado.
Tarea 4: ejecutar un proceso de bucle, que tomará la "primera dirección de correo electrónico" de la lista y contará todos los eventos de correo no deseado relacionados con esta dirección de correo electrónico. Luego, el proceso de bucle “avanzará” a la siguiente dirección de correo electrónico de la lista hasta llegar a la última dirección de correo electrónico de la lista.
La información sobre cada dirección de correo electrónico y la "suma" de los eventos de spam recibidos se escribirán en la consola de PowerShell y, en paralelo, se exportarán a un archivo de informe.
La salida del proceso de bucle tiene lugar en un espacio dedicado que se describe como una matriz hash.
En nuestro escenario, la matriz hash denominada $Resultados=@().
El proceso de bucle en el que consultamos el archivo de registro de spam para cada dirección de correo electrónico se implementa mediante el siguiente comando de PowerShell:
$ReceiveEvents = Get-MailDetailSpamReport -RecipientAddress $ID1 -StartDate $StartDate -EndDate $EndDateUsamos la variable - $ReceiveEvents como contenedor lógico, que almacenará la información sobre todos los eventos de correo no deseado relacionados con la dirección de correo electrónico especificada (representada como $ID1).
Contando los eventos de correo no deseado
Dado que tenemos la lista de eventos de correo no deseado que están relacionados con la dirección de correo electrónico específica (receptor específico), podemos usar PowerShell formal, para contar el número de eventos de correo no deseado existentes.
El proceso de conteo se implementa mediante el siguiente comando de PowerShell:
$ReceiveEventsCount = @($ReceiveEvents).countUsamos la variable - $ReceiveEventsCount como contenedor lógico, que almacenará los "resultados del conteo" para la dirección de correo electrónico específica.
Tarea 5: escribir la información que se guardó en la matriz hash en un archivo CSV.
El comando de PowerShell que utilizamos para exportar informes de correo no deseado a un archivo CSV es:
$ResultsExport | Export-CSV $A22\"$File1.CSV" -NoTypeInformation -Encoding utf8Usamos la variable $ResultsExport como contenedor lógico, que almacena todos los resultados recopilados durante el proceso del bucle. El significado es: cada dirección de correo electrónico del “receptor de correo no deseado” y la suma de los correos electrónicos no deseados (eventos de spam) que se enviaron a la dirección de correo electrónico específica.
El script de PowerShell cuenta (suma) todos los correos electrónicos no deseados recibidos.
# Define variables for a start date, and End date
$EndDate = Get-Date
$StartDate = $EndDate.Adddays(-30)
# Define variables that contain the folder names
$A20 = "C:\INFO\Spam mail Reports"
$A21 = "$A20\Summary Spam Report"
$A22 = "$A21\1. Count RECEIVED spam mail report - Each Unique E-mail Address"
# Create folders Structure that contains the exported information
# C:\INFO\Spam mail Reports
IF (!(Test-Path -path $A20))
{ New-Item $A20 -type directory | Out-Null }
# Summary Spam Report
IF (!(Test-Path -path $A21))
{ New-Item $A21 -type directory | Out-Null }
# 2. Count SENT + RECEIVED spam mail report - each Unique E-mail Address - <Date>
IF (!(Test-Path -path $A22))
{ New-Item $A22 -type directory | Out-Null }
# Get the complete content of the Exchange Online spam mail Log file (all existing spam mail events in the last 30 days)
$SpamMailLogFileContent =
for ($c = 1; $c -lt 1001; $c++)
{
if ((Get-MailDetailSpamReport -StartDate $StartDate -EndDate $EndDate -PageSize 5000 -Page $c).count -gt 0)
{
Get-MailDetailSpamReport -StartDate $StartDate -EndDate $EndDate -PageSize 5000 -Page $c
}
else
{ break; }
}
# Create a list of unique E-mail addresses that appear in the spam mail report | Spam Mail receiver (recipients that spam mail sent to them)
$ALLSpamMailRecipients = $SpamMailLogFileContent | Group-Object -Property RecipientAddress | Sort-Object name -descending | Select-Object name, count
# Define an array (hash) that will store information about spam mail events that fetched from the mail spam mail report
$Results = @()
ForEach ($SpamEvent in $ALLSpamMailRecipients)
{
# Specific Unique identity (E-mail address)
$ID1 = $SpamEvent.name
# Display progress bar information on the PowerShell console
Write-Progress -Activity "Export to Log Files - SPAM mail Report for $ID1 E-mail address - last 30 days"
# Define a variable that store ALL spam mail events of emails that were received by (sent to) specified recipient
$ReceiveEvents = Get-MailDetailSpamReport -RecipientAddress $ID1 -StartDate $StartDate -EndDate $EndDate
# Count the number of - all spam emails events of E-mail that sent to the specified recipient
$ReceiveEventsCount = @($ReceiveEvents).count
write-host -ForegroundColor white ----------------------------------------------------------------------------
write-host -ForegroundColor white "Spam mail information about - Exchange Online User " -NoNewline; Write-Host $ID1 -ForegroundColor white -BackgroundColor DarkGreen
write-host -ForegroundColor white "(The last 30 days)"
write-host
write-host -ForegroundColor white "* Number of RECEIVED spam emails:" $ReceiveEventsCount
write-host -ForegroundColor white ----------------------------------------------------------------------------
# Define that array of properties, that appears in the spam mail report
$Properties = @{
"E-mail address" = $ID1
"Spam mail Received" = $ReceiveEventsCount
}
# Define a variable that store the information about each identity
$Results += New-Object psobject -Property $properties
$ResultsExport = $Results | Select-Object "E-mail address", "Spam mail Received"
}
# Define the variable for the exported Filename
$File1 = "Received Spam emails per unique E-mail Address"
# Export information about - Sent SPAM mail Report
$ResultsExport | Export-CSV $A22\"$File1.CSV" -NoTypeInformation -Encoding utf8Resumen de exportación de correo no deseado | Contar (suma) todos los correos electrónicos no deseados enviados | Todas las direcciones de correo electrónico
El escenario actual es similar al que revisamos en la sección anterior.
La principal diferencia con respecto al escenario anterior es que ahora nos centramos principalmente en las entidades que envían correo no deseado.
El objetivo que buscamos lograr es contar los siguientes tipos de eventos de correo spam:
- Sumar (contar) la cantidad de correo no deseado que se envió desde (Enviado por) una entidad específica.
La sintaxis básica del comando PowerShell
La estructura de sintaxis básica de PowerShell que debemos usar en este escenario es:
$ReceiveEvents = Get-MailDetailSpamReport -SenderAddress <E-mail address> -
$SENTEventsCount = @($SENTEvents).count
write-host "The Number of Sent spam emails is: $SENTEventsCount"El script de PowerShell: contar (suma) todos los correos electrónicos no deseados enviados
# Define variables for a start date, and End date
$EndDate = Get-Date
$StartDate = $EndDate.Adddays(-30)
# Define variables that contain the folder names
$A20 = "C:\INFO\Spam mail Reports"
$A21 = "$A20\Summary Spam Report"
$A22 = "$A21\2. Count SENT spam mail report - Each Unique E-mail Address"
# Create folders Structure that contains the exported information
# C:\INFO\Spam mail Reports
IF (!(Test-Path -path $A20))
{ New-Item $A20 -type directory | Out-Null }
# Summary Spam Report
IF (!(Test-Path -path $A21))
{ New-Item $A21 -type directory | Out-Null }
# 2. Count SENT + RECEIVED spam mail report - each Unique E-mail Address - <Date>
IF (!(Test-Path -path $A22))
{ New-Item $A22 -type directory | Out-Null }
# Get the complete content of the Exchange Online spam mail Log file (all existing spam mail events in the last 30 days)
$SpamMailLogFileContent =
for ($c = 1; $c -lt 1001; $c++)
{
if ((Get-MailDetailSpamReport -StartDate $StartDate -EndDate $EndDate -PageSize 5000 -Page $c).count -gt 0)
{
Get-MailDetailSpamReport -StartDate $StartDate -EndDate $EndDate -PageSize 5000 -Page $c
}
else
{ break; }
}
# Create a list of unique E-mail addresses that appear in the spam mail report | Spam Mail Sender (E-mail address that sent spam mail)
$ALLSpamMailSenders = $SpamMailLogFileContent | Group-Object -Property SenderAddress | Sort-Object name -descending | Select-Object name, count
# efine an array (hash) that will store information about spam mail events that fetched from the mail spam mail report
$Results = @()
ForEach ($SpamEvent in $ALLSpamMailSenders)
{
# Specific Unique identity (E-mail address)
$ID1 = $SpamEvent.name
# Display progress bar information on the PowerShell console
Write-Progress -Activity "Export to Log Files - SPAM mail Report for $ID1 E-mail address - last 30 days"
# Define a variable that store ALL spam mail events of emails that where SENT by specified recipient
$SENTEvents = Get-MailDetailSpamReport -SenderAddress $ID1 -StartDate $StartDate -EndDate $EndDate
# Count the number of - Spam emails that was sent by (Sent from) a specific E-mail Address
$SENTEventsCount = @($SENTEvents).count
write-host -ForegroundColor white ----------------------------------------------------------------------------
write-host -ForegroundColor white "Spam mail information about - Exchange Online User " -NoNewline; Write-Host $ID1 -ForegroundColor white -BackgroundColor DarkGreen
write-host -ForegroundColor white "(The last 30 days)"
write-host
write-host -ForegroundColor white "* Number of SENT spam emails is: " -NoNewline; Write-Host $SENTEventsCount -ForegroundColor white -BackgroundColor Darkred
write-host -ForegroundColor white ----------------------------------------------------------------------------
# Define that array of -properties, that appears in the spam mail report
$Properties = @{
"E-mail address" = $ID1
"Spam mail SENT" = $SENTEventsCount
}
# Define a variable that store the information about each identity
$Results += New-Object psobject -Property $properties
$ResultsExport = $Results | Select-Object "E-mail address", "Spam mail SENT"
}
# Define the variable for the exported Filename
$File1 = "SENT Spam emails per unique E-mail Address"
# Export information about - Sent SPAM mail Report
$ResultsExport | Export-CSV $A22\"$File1.CSV" -NoTypeInformation -Encoding utf8Genere informes de correo no deseado dedicados para cada usuario de buzón de Exchange (modo masivo)
En esta sección, utilizamos un método que generará un "informe de correo no deseado dedicado" para cada dirección de correo electrónico de usuario de Exchange Online, que aparece en el archivo de registro de correo no deseado de Exchange Online.
Utilizo el término "dedicado" para describir el proceso en el que PowerShell creará automáticamente una carpeta dedicada para cada dirección de correo electrónico de usuario de Exchange Online.
Esta carpeta servirá como un contenedor que almacena el "informe de correo no deseado dedicado" que incluye información sobre todos los eventos de correo no deseado relacionados con la dirección de correo electrónico especificada.
Revisaremos dos variaciones de este escenario.
Escenario 1: en este escenario, creamos un informe de correo no deseado dedicado para cada dirección de correo electrónico de usuario de Exchange Online, que aparece como una dirección de correo electrónico que "RECIBE" correo no deseado.
En este caso, nuestro propósito es analizar eventos de correo spam en los que un elemento hostil ataca a los destinatarios de nuestra organización.
Escenario 2: en este escenario, creamos un informe de correo no deseado dedicado para cada dirección de correo electrónico de usuario de Exchange Online, que aparece como: dirección de correo electrónico que "ENVÍA" correo no deseado.
En este caso, nuestro propósito es analizar eventos de correo no deseado, en los que uno de los usuarios de nuestra organización distribuye (intencionalmente o no) correo no deseado.
Exportar informe de eventos de correo no deseado dedicado | RECIBIDO Correo no deseado | Para cada destinatario de usuario del buzón de Exchange
En el escenario actual, nos gustaría obtener información detallada sobre los eventos de correo no deseado, en los que los usuarios de Organotin estamos siendo atacados por el elemento hostil que les envía correo no deseado.
El script de PowerShell que implementará la siguiente secuencia de tareas:
Tarea 1: obtener información del archivo de registro de correo no deseado de Exchange Online sobre todos los eventos de correo no deseado que ocurrieron en los últimos 30 días.
Tarea 2: crear una lista de todas las direcciones de correo electrónico de los destinatarios de Exchange Online que se describen como "usuarios de Exchange Online" (usuario con un buzón).
La "lista" del destinatario del usuario de Exchange Online se creará utilizando el siguiente comando de PowerShell:
$GetMBXUser = Get-MailBox -Filter '(RecipientTypeDetails -eq "UserMailbox")' | Where-Object {$_.name -notlike '*DiscoverySearchMailbox*'} | Sort-Object -Property DisplaynameUsamos la variable $GetMBXUser como contenedor lógico, que almacenará la lista de direcciones de correo electrónico de los usuarios de Exchange Online.
Tarea 3: analice la información obtenida del archivo de registro de spam de Exchange Online y realice un proceso de bucle.
El script de PowerShell tomará la "primera dirección de correo electrónico" de la lista y comprobará si hay alguna información en el registro de spam sobre eventos de correo no deseado en los que se envió correo no deseado a la dirección de correo electrónico específica.
En caso de que no haya información relacionada con la dirección de correo electrónico específica, el script de PowerShell continuará implementando el mismo proceso para la "siguiente dirección de correo electrónico" de la lista.
En caso de que el script de PowerShell encuentre información sobre correos electrónicos no deseados que se enviaron a la dirección de correo electrónico específica, el script de PowerShell realizará las siguientes acciones:
3.1: cree una carpeta dedicada y asígnele un nombre utilizando el nombre para mostrar del destinatario del usuario de Exchange Online.
3.2 - Generar un registro de eventos de spam que incluya todos los eventos de correo spam en los que se envió correo spam a la dirección de correo electrónico especificada (descrito como spam recibido).
El script de PowerShell: Exportar informe de eventos de correo no deseado dedicado | Correo no deseado RECIBIDO
# Define variables for a start date and End date
$EndDate = Get-Date
$StartDate = $EndDate.Adddays(-30)
# All Exchange Online USER Mailboxes
$GetMBXUser = Get-MailBox -Filter '(RecipientTypeDetails -eq "UserMailbox")' | Where-Object { $_.name -notlike '*DiscoverySearchMailbox*' } | Sort-Object -Property Displayname
# Define variables that contain the folder names
$A30 = "$A10\C. Dedicated Spam Mail Report For Each E-mail Address"
$A31 = "$A30\1. Exchange Online users"
$A32 = "$A31\1.1 - RECEIVED Spam mail report"
# Create folders Structure that contains the exported information
# C:\INFO\Spam mail Reports
# C. Dedicated Spam Mail Report For Each E-mail Address
IF (!(Test-Path -path $A30))
{ New-Item $A30 -type directory | Out-Null }
# 1. Exchange Online users
IF (!(Test-Path -path $A31))
{ New-Item $A31 -type directory | Out-Null }
# 1.1 - RECEIVED Spam mail report
IF (!(Test-Path -path $A32))
{ New-Item $A32 -type directory | Out-Null }
# Loop via the list of existing Exchange Online mailbox users | locate information about the spam mail event for each E-mail address
ForEach ($Mailbox in $GetMBXUser)
{
# Specific Exchange Online mailbox identity | Specific member from mailboxes Array
$ID1 = $Mailbox.Displayname
$ID2 = $Mailbox.PrimarySmtpAddress
# Define variable - Spam report for a specified Exchange Online user
# Define a variable that store all spam mail event of E-mail that sent to the specified recipient
$ReceiveEvents = Get-MailDetailSpamReport -RecipientAddress $ID2 -StartDate $StartDate -EndDate $EndDate
# Count the number of - all spam mail event of E-mail that sent to the specified recipient
$ReceiveEventsCount = @($ReceiveEvents).count
# Verify if the specified Exchange Online user RECEIVE any spam mail
IF (!$ReceiveEventsCount)
{
}
Else
{
# Define variables that contain the folders name for the dedicated Exchange Online user spam report folder
$A40 = "$A32\$ID1"
# Dynamically create a dedicated folder that will store spam mail report
# <User name>
IF (!(Test-Path -path $A40))
{
New-Item $A40 -type directory | Out-Null
}
# Define the variable for the exported Filename
$File1 = "Spam emails RECEIVED"
# Export information about - Received Spam emails by specific Exchange Online recipient
$ReceiveEvents | Export-CSV $A40\"$File1.CSV" -NoTypeInformation -Encoding utf8
}
}Exportar eventos de spam Informe de correo | ENVIADO Correo no deseado | Para cada destinatario de usuario del buzón de Exchange
El escenario actual, es similar al que revisamos en el apartado anterior.
La principal diferencia con respecto al escenario anterior es que ahora nos centramos principalmente en las "entidades" que envían correo no deseado.
En este caso, queremos crear un informe de correo no deseado dedicado para cada dirección de correo electrónico de usuario de Exchange Online, que aparece en el archivo de registro de spam de Exchange Online como: Dirección de correo electrónico que envía correo no deseado.
El script de PowerShell: Exportar informe de eventos de correo no deseado dedicado | ENVIADO correo no deseado
# Define variables for a start date and End date
$EndDate = Get-Date
$StartDate = $EndDate.Adddays(-30)
# All Exchange Online USER Mailboxes
$GetMBXUser = Get-MailBox -Filter '(RecipientTypeDetails -eq "UserMailbox")' | Where-Object { $_.name -notlike '*DiscoverySearchMailbox*' } | Sort-Object -Property Displayname
# Define variables that contain the folders names
$A30 = "$A10\C. Dedicated Spam mail Report For Each E-mail Address"
$A31 = "$A30\1. Exchange Online users"
$A33 = "$A31\1.2 - SENT Spam mail report"
# Create folders Structure that contains the exported information
# C:\INFO\Spam mail Reports
# C. Dedicated Spam Mail Report For Each E-mail Address
IF (!(Test-Path -path $A30))
{ New-Item $A30 -type directory | Out-Null }
# 1. Exchange Online users
IF (!(Test-Path -path $A31))
{ New-Item $A31 -type directory | Out-Null }
# 1.2 - SENT Spam mail report
IF (!(Test-Path -path $A33))
{ New-Item $A33 -type directory | Out-Null }
# Loop via the list of existing Exchange Online mailbox users | locate information about spam mail event for each E-mail address
ForEach ($Mailbox in $GetMBXUser)
{
# Specific Exchange Online mailbox identity | Specific member from mailboxes Array
$ID1 = $Mailbox.Displayname
$ID2 = $Mailbox.PrimarySmtpAddress
#----------------------------------------------------------------------------------
# Define variable - Spam report for a specified Exchange Online user
#----------------------------------------------------------------------------------
# Display progress bar information on the PowerShell console
Write-Progress -Activity "Export to Log Files - SPAM mail Report for $ID1 E-mail address - last 30 days"
# Define a variable that store ALL spam mail events of emails that where SENT by specified recipient
$SENTEvents = Get-MailDetailSpamReport -SenderAddress $ID2 -StartDate $StartDate -EndDate $EndDate
# Count the number of - Spam emails that was sent by (Sent from) a specific E-mail Address
$SENTEventsCount = @($SENTEvents).count
# Verify if the specified Exchange Online user SENT any spam mail
IF (!$SENTEventsCount)
{
}
Else
{
# Define variables that contain the folders name for the dedicated Exchange Online user spam report folder
$A40 = "$A33\$ID1"
# Dynamically create a dedicated folder that will store spam mail report
# <User name>
IF (!(Test-Path -path $A40))
{
New-Item $A40 -type directory | Out-Null
}
# Define the variable for the exported Filename
$File1 = "Spam emails SENT"
# Export information about - SENT Spam emails by specific Exchange Online recipient
$SENTEvents | Export-CSV $A40\"$File1.CSV" -NoTypeInformation -Encoding utf8
}
}Resumen de exportación de correo no deseado | Contar (suma) correos electrónicos no deseados enviados | Todas las direcciones de correo electrónico | sólo si el valor del artículo enviado es mayor que X
En el escenario actual, nos gustaría contar los eventos de correo no deseado de "remitentes de correo no deseado" (correo no deseado que se envió desde una dirección de correo electrónico específica).
La diferencia con los escenarios anteriores en los que contamos el correo no deseado enviado por una dirección de correo electrónico específica es que esta vez queremos ver información solo cuando el número de elementos de correo no deseado enviados supera un cierto umbral.
En nuestro ejemplo específico, definimos el número "10" como umbral.
La sintaxis básica del comando PowerShell
La estructura de sintaxis básica de PowerShell que debemos usar en este escenario es:
$ReceiveEvents = Get-MailDetailSpamReport -SenderAddress <E-mail address> -
$SENTEvents = Get-MailDetailSpamReport -SenderAddress Angelina@o365info.com -StartDate $StartDate -EndDate $EndDate
$SENTEventsCount = @($SENTEvents).count
IF ($SENTEventsCount -lt 10)
{
write-host "The Number of Sent spam emails is: $SENTEventsCount"
write-host “This is less than required number ? “
}
Else
{
write-host "The Number of Sent spam emails is: $SENTEventsCount"
write-host “This is a dangerous sender !!!!”
}Así es como se ve el script de PowerShell:
# Define variables for start date and End date
$EndDate = Get-Date
$StartDate = $EndDate.Adddays(-30)
$ThresHold = Read-Host "Type the Number of threshold "
$A20 = "C:\INFO\Spam mail Reports - $Datef"
$A21 = "$A20\C. E-mail addreses that Pass a certain spam mail threshold"
$A22 = "$A21\1.1 RECEIVED spam mail - ThresHold"
$A23 = "$A21\1.2 SENT spam mail - ThresHold"
# Create folders Structure that contains the exported information to TXT, CSV and HTML files
#---------------------------------------------------------------------------------------------------
# C:\INFO\Spam mail Reports - <Date>
IF (!(Test-Path -path $A20))
{ New-Item $A20 -type directory | Out-Null }
# C. E-mail addresses that Pass a certain spam mail threshold
IF (!(Test-Path -path $A21))
{ New-Item $A21 -type directory | Out-Null }
# 1.1 RECEIVED spam mail - ThresHold
IF (!(Test-Path -path $A22))
{ New-Item $A22 -type directory | Out-Null }
# 1.2 SENT spam mail - ThresHold
IF (!(Test-Path -path $A23))
{ New-Item $A23 -type directory | Out-Null }
$SpamMailLogFileContent =
for ($c = 1; $c -lt 1001; $c++)
{
if ((Get-MailDetailSpamReport -StartDate $global:StartDate -EndDate $global:EndDate -PageSize 5000 -Page $c).count -gt 0)
{
Get-MailDetailSpamReport -StartDate $global:StartDate -EndDate $global:EndDate -PageSize 5000 -Page $c
}
else
{ break; }
}
# Define variables that will store the list of Exchange Online users (mailbox users) + all E-mail addresses that appear in the spam mail log file
# Create a list of unique E-mail address that appear in the spam mail report | Spam Mail Sender (E-mail address that sent spam mail)
$ALLSpamMailSenders = $SpamMailLogFileContent | Group-Object -Property SenderAddress | Sort-Object name -descending | Select-Object name, count
# Define an array (hash) that will store information about spam mail events that fetched from the mail spam mail report
$Results = @()
# Loop via the list of All existing E-mail addresses | locate information about spam mail event for each E-mail address
ForEach ($SpamEvent in $ALLSpamMailSenders)
{
# Specific Unique identity (E-mail address)
$ID1 = $SpamEvent.name
# Define variable - Spam report for a specified Exchange Online user
# Define a variable that store all spam mail event of E-mail that sent to the specified recipient
$SENTEvents = $LogFileContent | Where-Object { $_.SenderAddress -eq "$ID1" }
# Count the number of - Spam emails that was sent by (Sent from) a specific E-mail Address
$SENTEventsCount = @($SENTEvents).count
# Verify if the specific E-mail address passes the specified spam mail threshold
IF ($SENTEventsCount -lt $ThresHold)
{
}
Else
{
write-host "The number of spam emails that was sent by : " -nonewline; write-host $ID1 -ForegroundColor Yellow -BackgroundColor blue -nonewline; write-host
write-host "is - " -ForegroundColor white -nonewline; write-host $SENTEventsCount -ForegroundColor white -BackgroundColor Darkred -nonewline; write-host " spam emails" -ForegroundColor white
# Define that array of -properties, that appears in the spam mail report
$Properties = @{
"E-mail address" = $ID1
"Spam mail Sent" = $SENTEventsCount
}
# Define a variable that store the information about each identity
$Results += New-Object psobject -Property $properties
$ResultsExport = $Results | Select-Object "E-mail address", "Spam mail Sent"
}
# Define the variable for the exported Filename
$File1 = "Recipients that Send more then $ThresHold spam emails"
# Export information to the following file formats: TXT + CSV + HTML files
$ResultsExport | Export-CSV $A23\"$File1.CSV" -NoTypeInformation -Encoding utf8
}En el próximo artículo, veremos cómo utilizar el script de PowerShell para informes de correo no deseado.







