TacoFlavoredKisses
asked on
Migrate to 2010 Exchange, Distribution groups wrong.
We recently migrated over about 500 mailboxes to Exchange 2010 from another domain.
Some of the users have set up their own distribution lists on the old exchange server. While they were brought over, any internal names are still trying to access the mailboxes by the name of their location in the old exchange server.
Is there any way to automate updating these lists? I am sure we could just delete and recreate, or even export, fix, import, but both of these would take days with all these users.
Thanks for any suggestions.
Some of the users have set up their own distribution lists on the old exchange server. While they were brought over, any internal names are still trying to access the mailboxes by the name of their location in the old exchange server.
Is there any way to automate updating these lists? I am sure we could just delete and recreate, or even export, fix, import, but both of these would take days with all these users.
Thanks for any suggestions.
ASKER
They were in the users Contacts folders.
We did an exmerge of the data from the old exchange server to the new one. I am not sure if these DLs would have been included in that or if not. I assume so unless the users exported and imported them.
We did an exmerge of the data from the old exchange server to the new one. I am not sure if these DLs would have been included in that or if not. I assume so unless the users exported and imported them.
I am sure exmerge would of copied them over. What do these DLs contain? Other contacts from the users Contacts folder or contacts and mailboxes from the GAL?
ASKER
The DLs contain both internal and external addresses. All the external ones go out without issue. The internal ones bounce, saying of course they can not find the mailbox at the location they were on the old mail server.
Import the old legacyExchangedn values of the mailboxes onto the new mailboxes as X500 email addresses then then DLs will work and replying to old emails.
Here is a link to a script that will make your life a lot easier:
http://blogs.technet.com/mbaher/archive/2008/02/17/auto-complete-reply-ability-i-need-my-x500.aspx
http://blogs.technet.com/mbaher/archive/2008/02/17/auto-complete-reply-ability-i-need-my-x500.aspx
ASKER
That script looks great, and I have exported the aliases and x400 addresses from 2003 exchange.
When I try to import them into 2010 however I get an error:
Property 'EmailAddresses' cannot be found on this object; make sure it exists and is settable.
When I try to import them into 2010 however I get an error:
Property 'EmailAddresses' cannot be found on this object; make sure it exists and is settable.
I think the script needs slight modification to work on Exchange 2010, try the one below
Import-CSV d:\sbs.csv | foreach {
$Temp = Get-Mailbox -identity $_.alias
$Temp.EmailAddresses += “X500:” + $_.legacyexchangedn
set-mailbox -identity $Temp -EmailAddresses $Temp.EmailAddresses}
ASKER
Property 'EmailAddresses' cannot be found on this object; make sure it exists and is settable.
At C:\cax.ps1:3 char:7
+ $Temp. <<<< EmailAddresses += "X500:" + $_.legacyexchangedn
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : PropertyAssignmentExceptio n
Cannot process argument transformation on parameter 'Identity'. Cannot convert the "System.Collections.ArrayL ist" value
of type "System.Collections.ArrayL ist" to type "Microsoft.Exchange.Config uration.Ta sks.Mailbo xIdParamet er".
+ CategoryInfo : InvalidData: (:) [Set-Mailbox], ParameterBindin...mationEx ception
+ FullyQualifiedErrorId : ParameterArgumentTransform ationError ,Set-Mailb ox
At C:\cax.ps1:3 char:7
+ $Temp. <<<< EmailAddresses += "X500:" + $_.legacyexchangedn
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : PropertyAssignmentExceptio
Cannot process argument transformation on parameter 'Identity'. Cannot convert the "System.Collections.ArrayL
of type "System.Collections.ArrayL
+ CategoryInfo : InvalidData: (:) [Set-Mailbox], ParameterBindin...mationEx
+ FullyQualifiedErrorId : ParameterArgumentTransform
Can you post the first 2 lines of your csv file?
If you try get-mailbox -identity <alias from file> does it return anything?
If you try get-mailbox -identity <alias from file> does it return anything?
ASKER
alias,legacyexchangedn
auser,X400:c=US;a= ;p=STORE;o=Exchange;s=User ;g=Alex;
Yes, If I put that in it does work.
Name Alias ServerName ProhibitSendQuota
--- ----- ---------- -----------------
Alex User auser comex14 unlimited
auser,X400:c=US;a= ;p=STORE;o=Exchange;s=User
Yes, If I put that in it does work.
Name Alias ServerName ProhibitSendQuota
--- ----- ---------- -----------------
Alex User auser comex14 unlimited
That's not a legacyExchangeDN
legacyExchangeDN's look like this:
/o=Orgname/ou=AdminGroup/c n=Recipien ts/cn=MbxN ame
Find AUser's with ADSIEDIT and then put it in the file and it should work
legacyExchangeDN's look like this:
/o=Orgname/ou=AdminGroup/c
Find AUser's with ADSIEDIT and then put it in the file and it should work
ASKER
I misunderstood the article. I think I've got it now. Will test this out tomorrow. Thanks.
ASKER
Alright, trying to import the correct values now, but still getting the error:
Property 'EmailAddresses' cannot be found on this object; make sure it exists and is settable.
At C:\cax.ps1:3 char:7
+ $Temp. <<<< EmailAddresses += "X500:" + $_.legacyexchangedn
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : PropertyAssignmentExceptio n
Cannot process argument transformation on parameter 'Identity'. Cannot convert the "System.Collections.ArrayL ist" value
of type "System.Collections.ArrayL ist" to type "Microsoft.Exchange.Config uration.Ta sks.Mailbo xIdParamet er".
+ CategoryInfo : InvalidData: (:) [Set-Mailbox], ParameterBindin...mationEx ception
+ FullyQualifiedErrorId : ParameterArgumentTransform ationError ,Set-Mailb ox
Property 'EmailAddresses' cannot be found on this object; make sure it exists and is settable.
At C:\cax.ps1:3 char:7
+ $Temp. <<<< EmailAddresses += "X500:" + $_.legacyexchangedn
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : PropertyAssignmentExceptio
Cannot process argument transformation on parameter 'Identity'. Cannot convert the "System.Collections.ArrayL
of type "System.Collections.ArrayL
+ CategoryInfo : InvalidData: (:) [Set-Mailbox], ParameterBindin...mationEx
+ FullyQualifiedErrorId : ParameterArgumentTransform
try it with just 2 lines in your .csv file:
1.) the header line (alias, legacyexchangeDN)
2.) alias and legacyexchangedn of the mailbox
can you post the first 2 lines of your csv file again please?
1.) the header line (alias, legacyexchangeDN)
2.) alias and legacyexchangedn of the mailbox
can you post the first 2 lines of your csv file again please?
Does the object you are trying to add the X500 address to have e-mail addresses?
If you type
get-mailbox -identity auser |fl DislayName,Alias,EmailAddr esses
does it return value for DisplayName, Alias & EmailAddresses?
If you type
get-mailbox -identity auser |fl DislayName,Alias,EmailAddr
does it return value for DisplayName, Alias & EmailAddresses?
ASKER
[PS] C:\>get-mailbox -identity auser |fl DislayName,Alias,EmailAddr esses
Alias : auser
EmailAddresses : {SMTP:UserA@domain.org}
Alias : auser
EmailAddresses : {SMTP:UserA@domain.org}
sorry that should of been DisplayName
Are you typing in the script manually into EMS or have you created a .ps1 file? It should work either way, I have tested it both ways and it is adding X500 addresses to my test mailboxes...
Are you typing in the script manually into EMS or have you created a .ps1 file? It should work either way, I have tested it both ways and it is adding X500 addresses to my test mailboxes...
ASKER
We tried a ps1.
If we use the following just typing it in it works:
$Temp = Get-Mailbox auser
$dn = "LDAP://" + $Temp.distinguishedname;
$obj = [ADSI]$dn;
$obj.ProxyAddresses += “X500:” + thepath
$obj.setinfo()
If we use the following just typing it in it works:
$Temp = Get-Mailbox auser
$dn = "LDAP://" + $Temp.distinguishedname;
$obj = [ADSI]$dn;
$obj.ProxyAddresses += “X500:” + thepath
$obj.setinfo()
ASKER
Nevermind. It did not error, but I don't see the value in ADSIEdit
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Thanks for the points, did the script work and resolve your distribution list issue?
Have these DLs been migrated over and if so how?