A warning though, calendar permissions in Exchange Online can easily become corrupted. I’ve been in touch with support several times, but their only fix is to tell the user to remove and reapply the permissions, which is a sure way to annoy your users during migration.
This powershell snippet will tell you which mailbox is actively forwarding email, in what method (dual delivery or pure forwarding), to which email address and if the corresponding contact still exists and is active.
#Module name: findForwarderDetails
#Author: Jos Lieben (OGD)
#Date: 01-04-2016
#Description: this snippet will discover all active forwarders in your organization, and will print the original mailbox, target contact and target address and forwarding method
$output = @()
$mailboxes = Get-Mailbox -ResultSize Unlimited | Where {$_.ForwardingAddress -ne $Null}
foreach ($mailbox in $mailboxes){
$obj = New-Object PSObject
$obj | Add-Member NoteProperty mailboxName($mailbox.DisplayName)
if($mailbox.DeliverToMailboxAndForward){
$obj | Add-Member NoteProperty forwardingMode("Dual delivery")
}else{
$obj | Add-Member NoteProperty forwardingMode("Forward Only")
}
try{
$contact = Get-MailContact -Identity $mailbox.ForwardingAddress.DistinguishedName -ErrorAction Stop
$obj | Add-Member NoteProperty forwardingToName($contact.DisplayName)
$obj | Add-Member NoteProperty forwardingToEmail($contact.ExternalEmailAddress)
}catch{
$obj | Add-Member NoteProperty forwardingToName("CONTACT DOES NOT EXIST OR IS DISABLED")
$obj | Add-Member NoteProperty forwardingToEmail("CONTACT DOES NOT EXIST OR IS DISABLED")
}
$output += $obj
}
Write-Output $output