Avatar of DreRasta
DreRastaFlag for United States of America asked on

Adding additional SMTP Proxy address

Good day experts.  I am working on a task that require the following;

We currently have numerous proxy addresses in our domain
for example:
Fn.Ln@mickey.com
Fn.Ln@Donald.com
Fn.Ln@Snoopy.com
Fn.Ln.@Minnie.com

We have a new requirement to add an additional proxy address "Fn.Ln@Disney.com" to all accounts, but first I have to export all customers with Fn.Ln@mickey.com and ensure no duplicates will be created

Can someone provide a script or  that can export all Fn.Ln@mickey.com address from my org, and export to a csv file.  then an import script to import the edited csv and also add the additional proxy address of Fn.Ln@Disney.com.  

BTW, the Fn.Ln@Disney.com will not be the primary address as of yet.
Active DirectoryWindows Server 2003Exchange

Avatar of undefined
Last Comment
DreRasta

8/22/2022 - Mon
Justin Owens

To save you some trouble, are these AD Users or are they AD Contacts?  You cannot have duplicate SMTP Address if they are Users, but you can if they are Contacts.  That is why I ask.

As far as the export, what version of Exchange are you using and in what language to you want the script?
ASKER CERTIFIED SOLUTION
KenMcF

Log in or sign up to see answer
Become an EE member today7-DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform
Sign up - Free for 7 days
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
See how we're fighting big data
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
ask a question
ASKER
DreRasta

Yes, these are AD users.  I have downloaded the Quest AD cmdlets, but never used or have not taught myself Quest AD cmdlets yet
Justin Owens

Are you familiar with PowerShell in general?
This is the best money I have ever spent. I cannot not tell you how many times these folks have saved my bacon. I learn so much from the contributors.
rwheeler23
ASKER
DreRasta

yes I am.  I believe I had downloaded Quest Ad a few months ago.  attempting previous suggestion hopefully in the next hour
KenMcF

the quest ad cmdlets are pretty easy to use and have good help files. For a good reference you could do this

make a dir call c:\qad
get-command *qad* | %{get-help $_.name -full >c:\qad\$_.txt}
ASKER
DreRasta

I ran the suggested cmd and it provided an out csv with over 43000 lines of results.  This is good, but it also provided all the smtp address for other address space

For example, I would like to pull all customer mailboxes that have a @mickey.com address.  I am not to concerned about the x500, x400, or any other address, just the customers with @mickey.com

Also the output file, if I could get it to have two or more columns, DisplayName, SMTP address, Primary address that would be easier to sort and verify possible duplication.  Thank you for all your assistance thus far, it is greatly appreciated
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
KenMcF

Try to replace the current foreach with this one.

Foreach($p in $user.Proxyaddresses){
If($p -match "@mickey.com"){
$out += "$($user.samaccountname),$($p),$($user.mail)"
}}
ASKER
DreRasta

Are you saying to perform the following
$out = @()
$out += "name,Proxy"
$users = get-qaduser -sizelimit 0 -includedproperties proxyaddresses
    Foreach ($user in $users){
        Foreach($p in $user.Proxyaddresses){
        $out += "$($user.samaccountname),$($p)"
        }
    }
$out | out-file c:\users.csv
   
   
 $users = import-csv c:\users.csv
 foreach($user in $users){
 get-qaduser $user.name | add-qadproxyaddress $user.name $user.Proxy
 }
 
When would I place the new piece of script as listed below

Foreach($p in $user.Proxyaddresses){
If($p -match "@mickey.com"){
$out += "$($user.samaccountname),$($p),$($user.mail)"
}}
KenMcF

replace the current foreach loop like this
$out = @()
$out += "name,Proxy"
$users = get-qaduser -sizelimit 0 -includedproperties proxyaddresses
	Foreach($p in $user.Proxyaddresses){
		If($p -match "@mickey.com"){
		$out += "$($user.samaccountname),$($p),$($user.mail)"
	}}
$out | out-file c:\users.csv

Open in new window

Your help has saved me hundreds of hours of internet surfing.
fblack61
ASKER
DreRasta

Okay, I was able to pull the obtain the information and sort via the newly created csv file.  
You listed above to add the new address use the following;

$users = import-csv c:\users.csv
 foreach($user in $users){
 get-qaduser $user.name | add-qadproxyaddress $user.name $user.Proxy
 }

Where do I add in the new smtp:Fn.Ln@Disney.com.  Also, I just want to add this additional address, and not make it the Primary SMTP: address
SOLUTION
Log in to continue reading
Log In
Sign up - Free for 7 days
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
ASKER
DreRasta

importtet.csv has customers
wining,dave.wining@disney.com  - Recevied the following errors

[PS] C:\Documents and Settings\ess-faceya> $users = import-csv c:\scripts\doegov\importtest.csv [PS] C:\Documents and Settings\ess-faceya> foreach($user in $users){
>>  get-qaduser $user.name | add-qadproxyaddress -Address $user.Proxy
>> -type SMTP  }
>>
Get-QADUser : Cannot validate argument on parameter 'Identity'. The argument is null or empty. Supply an argument that is not null or empty and then try the command again.
At line:2 char:13
+  get-qaduser <<<<  $user.name | add-qadproxyaddress -Address
+ $user.Proxy -type SMTP
    + CategoryInfo          : InvalidData: (:) [Get-QADUser], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Quest.ActiveRoles.ArsPowerShellSnapIn.Powershell.Cmdlet
   s.GetUserCmdlet
KenMcF

Did you put the header fields in the CSV

NAME,PROXY

if you just do
import-csv c:\users.csv
you should get a list with the header fields.
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
ASKER
DreRasta

You are correct, I do receive a list with the header fields, but I continue to receive the Cannot validate arugument on parameter identity
KenMcF

See what you get with this

$users = import-csv c:\scripts\doegov\importtest.csv
foreach($user in $users){
$user.name
}

The output you get, is that a valid user name?

try one of the outputs in place of USERNAME

get-qaduser USERNAME
ASKER
DreRasta

[PS] C:\Documents and Settings\ess-faceya>$users = import-csv c:\scripts\doegov\importtest.csv foreach($user in $users){
 $user.name }
Unexpected token 'in' in expression or statement.
At line:1 char:70
+ $users = import-csv c:\scripts\doegov\importtest.csv foreach($user in <<<<  $users){ $user.name }
    + CategoryInfo          : ParserError: (in:String) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnexpectedToken


name,Proxy            
kingac,Ari.Kig@disney.com      
wining,Dave.Wining@disney.com

I started with Experts Exchange in 2004 and it's been a mainstay of my professional computing life since. It helped me launch a career as a programmer / Oracle data analyst
William Peck
KenMcF

I can not tell from your output but it looks like it may be a single line, it should be 3 lines.

$users = import-csv c:\scripts\doegov\importtest.csv
foreach($user in $users){
$user.name}
ASKER
DreRasta

It was one line, but I have made it three.   the script ran with no errors but no changes occurred
SOLUTION
Log in to continue reading
Log In
Sign up - Free for 7 days
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
ASKER
DreRasta

Yes, I am running the below on separte lines.  I am cutting and pasting the below into the Active Roles Mgmt Shell

$users = import-csv c:\scripts\doegov\importtest2.csv
 foreach($user in $users){
 get-qaduser $user.name | add-qadproxyaddress -Address $user.Proxy -type SMTP
 }
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
KenMcF

Can you test just one

get-qaduser USERNAME | add-qadproxyaddress -Address USERNAME@Disney.com -Type SMTP
ASKER
DreRasta

[PS] C:\Documents and Settings\ess-faceya>get-qaduser kingac | add-qadproxyaddress -Address kingac@doe.gov -Type smtp

Name                           Type            DN
----                           ----            --
King, Richard                  user            CN=King\, Richard,OU=Accounts,OU=IM-60 Operations,OU=IM,OU=Orgs,OU=HQ...
Add-QADProxyAddress : The e-mail address settings cannot be applied. Primary address is not specified for these address
 types: X500. For each address type, a certain e-mail address of that type should be set as primary.
At line:1 char:41
+ get-qaduser kingac | add-qadproxyaddress <<<<  -Address kingac@doe.gov -Type smtp
    + CategoryInfo          : NotSpecified: (DOE\kingac:ArsUserObject) [Add-QADProxyAddress], ProxyAddressException
    + FullyQualifiedErrorId : Quest.ActiveRoles.ArsPowerShellSnapIn.Powershell.Cmdlets.AddProxyAddressCommand
ASKER
DreRasta

I do appreciate your patience and help on this matter
All of life is about relationships, and EE has made a viirtual community a real community. It lifts everyone's boat
William Peck
KenMcF

Does that account have a primary SMTP addresss set?

from the error it sounds like this account does not have one set.
ASKER
DreRasta

Yes it has an primary SMTP address set.  

Some of my customers may have the following

smtp:   Fn.LN@Goofy.com
smtp:  alias@mickey.com
SMTP:  Fn.Ln@mickey.com    primary address


I want to add another address (Not Primary)

smtp:  Fn.Ln@Disney.com
KenMcF

Can you run this to see what output it gives you.

(get-qaduser kingac).proxyaddresses | %{$_}
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
ASKER
DreRasta

[PS] C:\Documents and Settings\ess-faceya>(get-qaduser kingac).proxyaddresses | %{$_}
x500:/O=DOL/OU=ALOMAIL/cn=Recipients/cn=richard.king2.hq.com
X400:C=US;A= ;P=Dep of En;O=HumanResources;S=King;G=Aric;
x400:C=US;A= ;P=Dep of En;O=HumanResources;S=King;G=Richard;I=A;
smtp:Richard.King2@hq.com
SMTP:Aric.King@hq.com
MBX:1
KenMcF

It is having problems with the x.500 address. If you go into that account is the x.500 address maked as the primary for x.500?
ASKER
DreRasta

I only have one x500 address in the email address tab
Experts Exchange has (a) saved my job multiple times, (b) saved me hours, days, and even weeks of work, and often (c) makes me look like a superhero! This place is MAGIC!
Walt Forbes
ASKER
DreRasta

And it is not Set as primary for the x500
SOLUTION
Log in to continue reading
Log In
Sign up - Free for 7 days
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
ASKER
DreRasta

unfortunately no.  all my customers have multiple smtp, and x400 and one x500 addresses
KenMcF

Can you test setting one as primary, then running the command again on a signle account?
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
ASKER
DreRasta

Wow, amazingly I set the X500 address as primary and ran
get-qaduser kingac | add-qadproxyaddress -Address kingac@doe.gov -Type SMTP

and it worked
ASKER
DreRasta

So yes doing it in a single user fashion will work, but I have over 10000 customers to add this additional address to.

KenMcF

let see if there is a way to set these to primary.
Experts Exchange is like having an extremely knowledgeable team sitting and waiting for your call. Couldn't do my job half as well as I do without it!
James Murphy
SOLUTION
Log in to continue reading
Log In
Sign up - Free for 7 days
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
ASKER
DreRasta

ZGood morning, I know I can add the additional SMTP addres via ADModify, but the problem is, I have over 10,000 in so many various OU's thus the reason, I pulled all the customers with certain smtp address @mickey.com and want to address each domain on an indivdual basis.  With ADModify, I would have to select OU's then manually sort and check each customer