DreRasta
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.
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.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Yes, these are AD users. I have downloaded the Quest AD cmdlets, but never used or have not taught myself Quest AD cmdlets yet
Are you familiar with PowerShell in general?
ASKER
yes I am. I believe I had downloaded Quest Ad a few months ago. attempting previous suggestion hopefully in the next hour
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}
make a dir call c:\qad
get-command *qad* | %{get-help $_.name -full >c:\qad\$_.txt}
ASKER
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
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
Try to replace the current foreach with this one.
Foreach($p in $user.Proxyaddresses){
If($p -match "@mickey.com"){
$out += "$($user.samaccountname),$ ($p),$($us er.mail)"
}}
Foreach($p in $user.Proxyaddresses){
If($p -match "@mickey.com"){
$out += "$($user.samaccountname),$
}}
ASKER
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),$($us er.mail)"
}}
$out = @()
$out += "name,Proxy"
$users = get-qaduser -sizelimit 0 -includedproperties proxyaddresses
Foreach ($user in $users){
Foreach($p in $user.Proxyaddresses){
$out += "$($user.samaccountname),$
}
}
$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),$
}}
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
ASKER
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
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
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
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\importte st.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], ParameterBindingValidation Exception
+ FullyQualifiedErrorId : ParameterArgumentValidatio nError,Que st.ActiveR oles.ArsPo werShellSn apIn.Power shell.Cmdl et
s.GetUserCmdlet
wining,dave.wining@disney.
[PS] C:\Documents and Settings\ess-faceya> $users = import-csv c:\scripts\doegov\importte
>> 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], ParameterBindingValidation
+ FullyQualifiedErrorId : ParameterArgumentValidatio
s.GetUserCmdlet
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.
NAME,PROXY
if you just do
import-csv c:\users.csv
you should get a list with the header fields.
ASKER
You are correct, I do receive a list with the header fields, but I continue to receive the Cannot validate arugument on parameter identity
See what you get with this
$users = import-csv c:\scripts\doegov\importte st.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
$users = import-csv c:\scripts\doegov\importte
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
[PS] C:\Documents and Settings\ess-faceya>$users = import-csv c:\scripts\doegov\importte st.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\importte st.csv foreach($user in <<<< $users){ $user.name }
+ CategoryInfo : ParserError: (in:String) [], ParentContainsErrorRecordE xception
+ FullyQualifiedErrorId : UnexpectedToken
name,Proxy
kingac,Ari.Kig@disney.com
wining,Dave.Wining@disney. com
$user.name }
Unexpected token 'in' in expression or statement.
At line:1 char:70
+ $users = import-csv c:\scripts\doegov\importte
+ CategoryInfo : ParserError: (in:String) [], ParentContainsErrorRecordE
+ FullyQualifiedErrorId : UnexpectedToken
name,Proxy
kingac,Ari.Kig@disney.com
wining,Dave.Wining@disney.
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\importte st.csv
foreach($user in $users){
$user.name}
$users = import-csv c:\scripts\doegov\importte
foreach($user in $users){
$user.name}
ASKER
It was one line, but I have made it three. the script ran with no errors but no changes occurred
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
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\importte st2.csv
foreach($user in $users){
get-qaduser $user.name | add-qadproxyaddress -Address $user.Proxy -type SMTP
}
$users = import-csv c:\scripts\doegov\importte
foreach($user in $users){
get-qaduser $user.name | add-qadproxyaddress -Address $user.Proxy -type SMTP
}
Can you test just one
get-qaduser USERNAME | add-qadproxyaddress -Address USERNAME@Disney.com -Type SMTP
get-qaduser USERNAME | add-qadproxyaddress -Address USERNAME@Disney.com -Type SMTP
ASKER
[PS] C:\Documents and Settings\ess-faceya>get-qa duser 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,O U=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.ArsPower ShellSnapI n.Powershe ll.Cmdlets .AddProxyA ddressComm and
Name Type DN
---- ---- --
King, Richard user CN=King\, Richard,OU=Accounts,OU=IM-
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)
+ FullyQualifiedErrorId : Quest.ActiveRoles.ArsPower
ASKER
I do appreciate your patience and help on this matter
Does that account have a primary SMTP addresss set?
from the error it sounds like this account does not have one set.
from the error it sounds like this account does not have one set.
ASKER
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
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
Can you run this to see what output it gives you.
(get-qaduser kingac).proxyaddresses | %{$_}
(get-qaduser kingac).proxyaddresses | %{$_}
ASKER
[PS] C:\Documents and Settings\ess-faceya>(get-q aduser kingac).proxyaddresses | %{$_}
x500:/O=DOL/OU=ALOMAIL/cn= Recipients /cn=richar d.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
x500:/O=DOL/OU=ALOMAIL/cn=
X400:C=US;A= ;P=Dep of En;O=HumanResources;S=King
x400:C=US;A= ;P=Dep of En;O=HumanResources;S=King
smtp:Richard.King2@hq.com
SMTP:Aric.King@hq.com
MBX:1
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
I only have one x500 address in the email address tab
ASKER
And it is not Set as primary for the x500
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
unfortunately no. all my customers have multiple smtp, and x400 and one x500 addresses
Can you test setting one as primary, then running the command again on a signle account?
ASKER
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
get-qaduser kingac | add-qadproxyaddress -Address kingac@doe.gov -Type SMTP
and it worked
ASKER
So yes doing it in a single user fashion will work, but I have over 10000 customers to add this additional address to.
let see if there is a way to set these to primary.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
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
As far as the export, what version of Exchange are you using and in what language to you want the script?