You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.9 KiB
57 lines
1.9 KiB
$uri = "https://your.mailbox.server/powershell" |
|
$mbx = "username@domain.com" |
|
|
|
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri $uri -Authentication Basic -Credential $cred -AllowRedirection |
|
Import-PSSession $session |
|
|
|
# Get existing mailbox rules |
|
$rules = Get-InboxRule -Mailbox $mbx |
|
|
|
# Get properties that will contain an address |
|
$params = 'ExceptIfFrom','ExceptIfSentTo','ForwardAsAttachmentTo','ForwardTo','From','RedirectTo','SentTo' |
|
|
|
# SMTP format is {"Display Name" [SMTP:alias@domain.tld]} |
|
# LegacyDN format is {"Display Name" [EX:/distinguished/name]} |
|
|
|
# we need to identify every rule that contains a legacyDN in any of the members that can contain an SMTP address |
|
|
|
# pull every rule that contains a value for any of the address inboxrule properties |
|
|
|
# iterate through rules |
|
foreach ($rule in $rules) |
|
{ |
|
# grab rule identity - need this for Set-InboxRule |
|
$ruleid = $rule.RuleIdentity |
|
# iterate through each address parameter |
|
foreach ($param in $params) |
|
{ |
|
# assign rule.parameter to a variable for convenience |
|
$rparam = $rule.$param |
|
|
|
# if rparam contains a value, do stuff |
|
if ($rparam) |
|
{ |
|
# iterate through array of addresses in $rparam - we need the index of the array for this one |
|
for ($i = 0; $i -lt $rparam.count; $i++) |
|
{ |
|
#check if EX or SMTP |
|
if ($rparam[$i] -clike "*EX*") |
|
{ |
|
# extract the DN from the output |
|
$legacydn = ($rparam[$i] -csplit '\[EX\:')[1] -Replace "]", "" |
|
|
|
# get the SMTP address for each DN |
|
$smtp = Get-Recipient $legacydn | Select-Object PrimarySMTPAddress |
|
|
|
# replace DN with SMTP address |
|
$rparam[$i] = $rparam[$i] -replace '\[(.*?)\]',('[SMTP:'+$smtp.PrimarySMTPAddress.ToString()+']') |
|
} |
|
} |
|
|
|
# now that our $rules variable has been updated, we SHOULD be able to take the same rule by ID and update the same parameter |
|
$ruleparam = @{$param = $rparam} |
|
|
|
Set-InboxRule $ruleid @ruleparam -Mailbox $mbx |
|
} |
|
} |
|
} |