#Get all user mailboxes
$Mailboxes = Get-Mailbox -Identity mher -ResultSize unlimited | where {$_.RecipientTypeDetails -eq "UserMailbox" -and $_.IsMailboxEnabled -eq "True"}
#set variables
$ForwardingRules = @()
#Get rules bases on avaialble mailboxes and filter if contains forward and email domain.
#Can add as many email domain as needed for the search or remove all together to return all forwarding.
foreach ($Mailbox in $Mailboxes){
Write-Host "checking mailboxes $($Mailbox.Name)"
$ForwardingRules += Get-InboxRule -Mailbox $Mailbox.Name | Where-Object {$_.Description -like "*forward*" -and ($_.Description -like "*outlook*" -or $_.Description -like "*gmail*")}
}
#Export reults to file
if ($ForwardingRules) {
#set export headers
"mailbox,rule_name,forwardto,enabled" | Out-File C:\temp\restults.txt
foreach ($Rule in $ForwardingRules) {
Write-Host "-------------------------"
Write-Host "Forwarding rules to external email addresses for mailbox: $($Rule.MailboxOwnerId)"
Write-Host "Rule Name: $($Rule.Name)"
Write-Host "Forward To: $($Rule.ForwardTo)"
Write-Host "Enabled: $($Rule.Enabled)"
Write-Host "-------------------------"
"$($Rule.MailboxOwnerId),$($Rule.Name),$($Rule.ForwardTo),$($Rule.Enabled)" | Out-File C:\temp\restults.txt -Append
}
}else {
Write-Host "No forwarding rules to external email found"
}