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 } } } |