Per verificare i messaggi che escono da un server Exchange in un determinato range di date/ora è possibile usare la seguente sintassi nella Exchange Management Console:
get-messagetrackinglog -EventID "SEND" -Start "12/18/2013 00:01:00" -End "12/18/2013 16:11:00"| ConvertTo-Html -as Table -property Timestamp, Sender, MessageSubject, RecipientCount > ReportMail.html; ii ReportMail.html
get-messagetrackinglog -EventID "SEND" -Start "12/18/2013 00:01:00" -End "12/18/2013 16:11:00"| where-object {$_.Sender -eq "EmailDelMittente"} | ConvertTo-Html -as Table -property Timestamp, Sender, MessageSubject, RecipientCount > ReportMail.html; ii ReportMail.html
Il tipo di evento “SEND” può essere sostituito con “RECEIVE” in questo modo:
get-messagetrackinglog -EventID "RECEIVE" -Start "12/18/2013 14:31:00" -End "12/18/2013 16:11:00" | select Timestamp, Sender, {$_.Recipients}, MessageSubject, RecipientCount | ConvertTo-Html -as table > ReportMail.html; ii ReportMail.html
Ad esempio, per verificare le e-mail ricevute da un proprio utente:
get-messagetrackinglog -EventID "RECEIVE" -Start "12/18/2013 14:31:00" -End "12/18/2013 16:11:00" | where-object {$_.Recipients -like "*EmailDelDestinatarioInterno*"} | select Timestamp, Sender, {$_.Recipients}, MessageSubject, RecipientCount | ConvertTo-Html -as table > ReportMail.html; ii ReportMail.html
Mentre per controllare le e-mail spedite da nomeutente@gmail.com a mioutente@miodominio.it:
get-messagetrackinglog -EventID "RECEIVE" -Start "12/18/2013 14:31:00" -End "12/18/2013 16:11:00" | where-object {$_.Sender -eq "nomeutente@gmail.com" -and $_.Recipients -like "*mioutente@miodominio.it*"} | select Timestamp, Sender, {$_.Recipients}, MessageSubject, RecipientCount | ConvertTo-Html -as table > ReportMail18122013.html; ii ReportMail18122013.html
Volendo è possibile aggiungere un foglio CSS con il codice seguente:
(inserire il parametro -CssUri nomefile.css
table { width: 100%; color: #333; font-family: Helvetica, Arial, sans-serif; width: 640px; border-collapse: collapse; border-spacing: 0; } td th { border: 1px solid #CCC; height: 60px; } th { background: #F3F3F3; font-weight: bold; border: 1px solid #7F7F7F; } td { background: #FAFAFA; text-align: center; font-size:12px; border: 1px solid #7F7F7F; }
Esempio
Voglio un file HTML per verificare tutte le email spedite ad utenti Gmail nel mese di Dicembre del 2013
get-messagetrackinglog -EventID "SEND" -Start "12/01/2013 00:00:00" -End "12/31/2013 23:59:59" |where-object {$_.Recipients -like "*gmail.com*"} | select @{Expression={$_.Timestamp};Label="Data/Ora"}, @{Expression={$_.Sender};Label="Mittente"}, @{Expression={$_.Recipients};Label="Destinatari"}, @{Expression={$_.MessageSubject};Label="Oggetto"}, @{Expression={$_.RecipientCount};Label="Numero destinatari"} | ConvertTo-html -cssuri "table.css" > ReportMail.html ; ii .\ReportMail.html
Voglio che mi venga spedito un file HTML allegato ad un email contenente tutte i messaggi ricevuti da un utente del mio dominio nelle ultime 24 ore
$allegato= $env:temp +'\Messaggi_' + (get-date).day + '-' + (get-date).month + '-' + (get-date).year + '.html' get-messagetrackinglog -EventID "RECEIVE" -Start (Get-Date).AddHours(-24) | where {$_.Recipients -like "*utente@dominio.com*"}| select Timestamp, Sender, MessageSubject | ConvertTo-Html -as table > $allegato; Send-MailMessage -to "destinatario-rapporto-mail@dominio.it" -from "postmaster@dominio.it" -Subject ('Report mesaggi del ' + (get-date).day + '-' + (get-date).month + '-' + (get-date).year) -Attachments "$allegato" - SmtpServer 127.0.0.1
Se invece volete esportare su Excel le email spedite nelle ultime 24 ore:
get-messagetrackinglog -EventID "SEND" -Start (get-date).AddHours(-24) |where-object {$_.Sender -like "*EmailDelMittente*"} | select @{Expression={$_.Timestamp};Label="Data/Ora"}, @{Expression={$_.Sender};Label="Mittente"}, @{Expression={$_.Recipients};Label="Destinatari"}, @{Expression={$_.MessageSubject};Label="Oggetto"}, @{Expression={$_.RecipientCount};Label="Numero destinatari"} | ConvertTo-CSV -delimiter "`t" > ReportMail.csv ; ii .\ReportMail.csv
ATTENZIONE
nel caso riceviate il seguente errore
Get-MessageTrackingLog : Impossibile associare il parametro 'Start'. Impossibile convertire il valore "12/18/2013 14:31:00" nel tipo "System.DateTime". Errore: "Stringa non riconosciuta come valore DateTime valido." In riga:1 car:49
Bisognerà invertire il mese ed il giorno nelle date!