Script to set ExternalEmailAddress
Developers have a sharepoint site setup that creates mailenabled contacts but the email address they have set is the internal server address. So, I have an OU with 100 or so contacts that I would like to set "externalemailaddress" for. Here is one of my attemps... I have commented out another attempt. the script is not setting the individual contact alias for the email alias. #Set the external email address for the entered OU to alias@dashport.domain.com #Get all contacts in the OU $contacts=get-mailcontact -organizationalunit "Ou/Operations/TestDashEName" foreach ($contact in $contacts) { #set emailaddresspolicy to false $contact | set-mailcontact -emailaddresspolicyenabled $false (this part of the script works fine) #assign the email domain to each alias (here the script is not pulling in the $contact variable for either try) set-mailcontact $contact -externalemailaddress $contact@domain.com #$contact | set-mailcontact -externalemailaddress $contact.alias@domain.com #verify setting #$contact | get-Mailcontact | select-object Name, ExternalEmailAddress (this runs fine if I remove the middle section) }
April 27th, 2011 5:20pm

$contact@domain.com doesn't tell the pipeline that you're trying to add the contact's alias with "@domain.com". There are two problems: $contact is the whole contact object. you may want to use the $contact.alias attribute. You need to break apart the static text (@domain.com) with your variable See what I did here (http://wp.me/pAAoj-8m) with UPNs. you need to use the same concept. I'll work this up for you and post later tonight. Mike Crowley Check out My Blog!
Free Windows Admin Tool Kit Click here and download it now
April 27th, 2011 8:37pm

This should work for Exchange 2007: Get-MailContact -OrganizationalUnit 'demolab.local/DemoLab Contacts' | foreach {($NewAddress = $_.alias + "@domain.com"); Set-MailContact $_.identity -ExternalEmailAddress $NewAddress } And this for Exchange 2010: $Contacts = Get-MailContact -OrganizationalUnit 'demolab.local/DemoLab Contacts' $contacts | foreach {($NewAddress = $_.alias + "@NewDomain.Com"); Set-MailContact $_.identity -ExternalEmailAdd ress $NewAddress } The reason Exchange 2010 requires 2 lines is described here. Mike Crowley Check out My Blog!
April 27th, 2011 9:15pm

Thanks Mark! This works great. I am running 2007 So, what exactly does "$_.identity" and $NewAddress tell the script? I now have a new request for the same OU. I need to add 2 more addresses to each mailcontact in the OU. I need the +=emailaddresses commandlet to keep the existing one. Thanks for your help and instruction
Free Windows Admin Tool Kit Click here and download it now
April 28th, 2011 9:30am

*Mike, but I'll forgive you. :) Question 1) For each contact we encounter, we run two commands: build a new variable called $newaddress with the contact's alias + @domain.com stamp the contact's -externalemailaddress with the current value of the $newaddress variable The second bullet requires us to define who we're working with. $_.identity uses the current identity of the contact. Question 2) You want to add an additional proxy address for the existing contacts, while preserving the work we did with the above script? Confirm this so that I'm sure I understand. Mike Crowley Check out My Blog!
April 28th, 2011 9:35am

LOL sorry. I typed it right but I had left the window open over night so the site wouldn't submit. Don't know how I got Mark on the second time. :) Yes that is correct. I thought I had tested the -emailaddresses cmdlet to add but this still replaces one of the addresses. They want to add an internal address that uses .org, and an address that is @servermachinename and keep the external one we just added that uses .com.
Free Windows Admin Tool Kit Click here and download it now
April 28th, 2011 9:38am

There are a few ways to do that. Here is one: http://help.outlook.com/en-us/140/cc967281.aspx Mike Crowley Check out My Blog!
April 28th, 2011 9:54am

on 2nd thought, just add it to the string above. Mike Crowley Check out My Blog!
Free Windows Admin Tool Kit Click here and download it now
April 28th, 2011 10:02am

Mike, will $users = Get-Mailbox work the same as $users = Get-Mailcontact -organizationalunit "organizationalunit" I was following till you said to add it to the string above - how would I add it?
April 28th, 2011 10:09am

This appears to work using get-mailbox but I am getting 'cannot conver the value "System.Oject[]" ...' error Get-Mailcontact -OrganizationalUnit 'Ou/name' | foreach { $user = (Get-Mailcontact $_.Name).Name $email1= "$user@sub.domain.org" $email2= "$user@servername.hntb.org" $_.emailAddresses += ($email1,$email2) Set-Mailcontact $_ -emailAddresses $_.emailAddresses } ###################################### I did try editing your original solution from Set-MailContact $_.identity -ExternalEmailAddress $NewAddress } to Set-MailContact $_.identity -EmailAddresses $NewAddress} I thought I would just run it for each address. This works but it changes the address listings instead of adding an address.
Free Windows Admin Tool Kit Click here and download it now
April 28th, 2011 10:25am

I did something similiar. This incorporates the previously posted logic as well. You could save this as a .ps1 file: $contacts = Get-MailContact -OrganizationalUnit 'demolab.local/DemoLab Contacts' $contacts | foreach { $OutsideAddress = ($_.alias + "@OutsideDomain.com") $ProxyAddress1 = ($_.alias + "@InsideDomain1.com") $ProxyAddress2 = ($_.alias + "@InsideDomain2.com") Set-MailContact -Identity $_.identity -ExternalEmailAddress $OutsideAddress -EmailAddresses $OutsideAddress, $ProxyAddress1, $ProxyAddress2 } (This will work in Exchange 2007 or 2010) Mike Crowley Check out My Blog!
April 28th, 2011 10:31am

Excellent! Thanks, this will give me the solution and it helps much in (scripting-learning) A final question, just wondering on this one. What would be required for an x400 address? Thanks for you help and time!
Free Windows Admin Tool Kit Click here and download it now
April 28th, 2011 10:37am

No problem. The learning goes both ways. :) What are you looking to do with them (x400)? Mike Crowley Check out My Blog!
April 28th, 2011 10:39am

Nothing, I was just asking to learn. Could actually create an emai address policy, based on an OU.
Free Windows Admin Tool Kit Click here and download it now
April 28th, 2011 10:51am

Well, you can add another variable and work with them too. But Exchange 2007 doesn't need x400 anyway. If you still need them for Exchange 2003, I'd use the EAP as you suggested. Good Luck! Mike Crowley Check out My Blog!
April 28th, 2011 10:57am

Thanks Mike! I appreciate the help.
Free Windows Admin Tool Kit Click here and download it now
April 28th, 2011 11:06am

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics