# get-unusedrecipient # # Collect all recipients and parse messagetracking für in/out messages # report all recipients with their most current timestamp of in/out message param ( [string]$csvfile = ".\get-unusedrecipient.csv" ) set-psdebug -strict write-host "get-unusedrecipient: Start" write-host "get-unusedrecipient: Loading Recipients" [hashtable]$recipientlist=@{} [hashtable]$internalsmtp=@{} foreach ($recipient in (get-recipient -resultsize unlimited )) { $primarysmtp = $recipient.PrimarySmtpAddress.tostring().tolower() write-host "get-unusedrecipient: Recipient:"$primarysmtp $recipientlist.add($primarysmtp, ("" | select smtp,type,send, receive)) $recipientlist.item($primarysmtp).smtp = $primarysmtp $recipientlist.item($primarysmtp).type = $recipient.RecipientType $recipientlist.item($primarysmtp).send = [datetime]"1.1.2000" $recipientlist.item($primarysmtp).receive = [datetime]"1.1.2000" foreach ($proxy in $recipient.emailaddresses) { if ($proxy.prefixstring -eq "SMTP") { #write-host "get-unusedrecipient: AddSMTP:" $Proxy.smtpaddress $internalsmtp.add($proxy.smtpaddress.tolower(),$primarysmtp) } else { #write-host "get-unusedrecipient: Ignore:" $Proxy.ProxyAddressString } } } write-host "get-unusedrecipient: Total Recipients:"$recipientlist.count write-host "get-unusedrecipient: Total ProxyAddr:"$internalsmtp.count write-host "get-unusedrecipient: Loading Message tracking Logs:Start" [int]$lines = 0 get-transportserver | get-messagetrackinglog -resultsize unlimited | %{ $lines +=1 if (($lines %1000) -eq 0) { write-host "." -nonewline } $entry = $_ if ($internalsmtp.containskey($entry.sender.tolower())) { #write-host "get-unusedrecipient: Intern:" $entry.sender.tolower() if ($recipientlist.item($internalsmtp.item($entry.sender.tolower())).send -lt $entry.timestamp){ $recipientlist.item($internalsmtp.item($entry.sender.tolower())).send = $entry.timestamp } } else { #write-host "get-unusedrecipient: Extern:" $entry.sender.tolower() } foreach ($recipient in $entry.recipients){ if ($internalsmtp.containskey($recipient.tolower())) { #write-host "get-unusedrecipient: Internal:" $recipient.tolower() if ($recipientlist.item($internalsmtp.item($recipient.tolower())).receive -lt $entry.timestamp){ $recipientlist.item($internalsmtp.item($recipient.tolower())).receive = $entry.timestamp } } else { #write-host "get-unusedrecipient: Extern:" $recipient.tolower() } } } write-host "get-unusedrecipient: Loading Message tracking Logs: DONE" write-host "get-unusedrecipient: Sending Results to CSV-File" $recipientlist.values | export-csv $csvfile -notypeinformation write-host "get-unusedrecipient: End"