Enable-forwarding-Exchange

Post date: May 07, 2012 12:29:27 PM

This script can be used to enable forwarding of mail to an external address. There are three forwarding options.

In this script a contact will also be created if it doesn't exist.

function set_forward_mail($username, $forwarding_mode, $forwarding_address)

{

# forwarding_mode

# 0 = forwarding disabled

# 1 = forward without local delivery

# 2 = forward with local delivery


if ($forwarding_mode -eq "2")

{

if (!(get-qadobject -identity "$username (forwarded by PowershellApp)"))

{

# contact doesn't exist (yet). Create now

New-QADObject -ParentContainer "$base_security_groups_container$FQDN" -type "contact" -name "$username (forwarded by PowershellApp)" -DisplayName "$username (forwarded by PowershellApp)" -ObjectAttributes @{Description="$username (forwarded by PowershellApp)";mail="$forward_address";targetAddress="SMTP:$forwarding_address";mailNickname="$username"+"_forwarded_by_PowershellApp";msExchHideFromAddressLists=$true}

# Recipient Update Service will do the rest.

# Set the forwarding mode, type 2

$forward_user_dn = (Get-QADObject -identity "$username (forwarded by PowershellApp)" | Select-Object dn).dn

set-qaduser -identity $username -objectAttributes @{deliverAndRedirect=$true;altRecipient=$forward_user_dn}

}

else

{

# contact DOES exist. Update

set-qadobject -identity "$username (forwarded by PowershellApp)" -ObjectAttributes @{Description="$username (forwarded by PowershellApp)";mail="$forward_address";targetAddress="SMTP:$forwarding_address";mailNickname="$username"+"_forwarded_by_PowershellApp";msExchHideFromAddressLists=$true}

# clear any old addresses in the list of addresses and make the new one primary

get-qadobject -identity "$username (forwarded by PowershellApp)" | Clear-QADProxyAddress | Add-QADProxyAddress -Address "SMTP:$forwarding_address" -Primary

# make sure the forwarding mode is correct, type 2

$forward_user_dn = (Get-QADObject -identity "$username (forwarded by PowershellApp)" | Select-Object dn).dn

set-qaduser -identity $username -objectAttributes @{deliverAndRedirect=$true;altRecipient=$forward_user_dn}

}

}

if ($forwarding_mode -eq "1")

{

if (!(get-qadobject -identity "$username (forwarded by PowershellApp)"))

{

# contact doesn't exist (yet). Create now

New-QADObject -ParentContainer "$base_security_groups_container$FQDN" -type "contact" -name "$username (forwarded by PowershellApp)" -DisplayName "$username (forwarded by PowershellApp)" -ObjectAttributes @{Description="$username (forwarded by PowershellApp)";mail="$forward_address";targetAddress="SMTP:$forwarding_address";mailNickname="$username"+"_forwarded_by_PowershellApp";msExchHideFromAddressLists=$true}

# Recipient Update Service will do the rest.

# Set the forwarding mode, type 2

$forward_user_dn = (Get-QADObject -identity "$username (forwarded by PowershellApp)" | Select-Object dn).dn

set-qaduser -identity $username -objectAttributes @{deliverAndRedirect=$false;altRecipient=$forward_user_dn}

}

else

{

# contact DOES exist. Update

set-qadobject -identity "$username (forwarded by PowershellApp)" -ObjectAttributes @{Description="$username (forwarded by PowershellApp)";mail="$forward_address";targetAddress="SMTP:$forwarding_address";mailNickname="$username"+"_forwarded_by_PowershellApp";msExchHideFromAddressLists=$true}

# clear any old addresses in the list of addresses and make the new one primary

get-qadobject -identity "$username (forwarded by PowershellApp)" | Clear-QADProxyAddress | Add-QADProxyAddress -Address "SMTP:$forwarding_address" -Primary

# make sure the forwarding mode is correct, type 2

$forward_user_dn = (Get-QADObject -identity "$username (forwarded by PowershellApp)" | Select-Object dn).dn

set-qaduser -identity $username -objectAttributes @{deliverAndRedirect=$false;altRecipient=$forward_user_dn}

}

}

if ($forwarding_mode -eq "0")

{

if (!(get-qadobject -identity "$username (forwarded by PowershellApp)"))

{

# contact doesn't exist, just disable forwarding

set-qaduser -identity $username -objectAttributes @{deliverAndRedirect=$false;altRecipient=""}

}

else

{

# contact DOES exist. disable forwarding and delete contact

set-qaduser -identity $username -objectAttributes @{deliverAndRedirect=$false;altRecipient=""}

Remove-QADObject -identity "$username (forwarded by PowershellApp)" -Force

}

}

}