Private/Core/Test-EmailForwarding.ps1
|
# PSGuerrilla - Jim Tyler, Microsoft MVP - CC BY 4.0 # https://github.com/jimrtyler/PSGuerrilla | https://creativecommons.org/licenses/by/4.0/ # AI/LLM use: see AI-USAGE.md for required attribution function Test-EmailForwarding { [CmdletBinding()] param( [hashtable[]]$AdminEvents = @() ) $results = [System.Collections.Generic.List[PSCustomObject]]::new() $forwardingEvents = @( 'CREATE_EMAIL_MONITOR' 'ADD_FORWARDING_ADDRESS' 'CHANGE_EMAIL_SETTING' ) foreach ($event in $AdminEvents) { $eventName = $event.EventName if ($eventName -in $forwardingEvents) { $targetUser = $event.Params['USER_EMAIL'] ?? $event.Params['TARGET_USER'] ?? '' $forwardTo = $event.Params['EMAIL_FORWARDING_DESTINATION'] ?? $event.Params['NEW_VALUE'] ?? '' # For CHANGE_EMAIL_SETTING, also check if the setting is forwarding-related if ($eventName -eq 'CHANGE_EMAIL_SETTING') { $settingName = $event.Params['SETTING_NAME'] ?? '' if ($settingName -and $settingName -notmatch 'forwarding|routing|redirect') { continue # Skip non-forwarding email setting changes } } $results.Add([PSCustomObject]@{ Timestamp = $event.Timestamp User = $event.User EventName = $eventName IpAddress = $event.IpAddress TargetUser = $targetUser ForwardTo = $forwardTo Params = $event.Params }) continue } } return @($results) } |