People wrote comments with suggestions (thank you all for that) and I thought I published an updated version that work with Exchange 2010 together with another script that add SMTP addresses.
# Remove proxy addresses # change the Get-Mailbox statement in line 7 to select only a subset of mailboxes $DomainToRemove = "*@olddomain.com" #get mailboxes and iterate through Get-Mailbox -ResultSize Unlimited | foreach { $_.Alias # .emailaddresses returns array # loop each email address for ($i=$_.EmailAddresses.Count;$i -ge 0; $i--) { $address = $_.EmailAddresses[$i] #Write-Host $address # removes all addresses with $DomainToRemove if ($address.SmtpAddress -like $DomainToRemove ) { Write-host("Remove smtp adress: " + $address.AddressString.ToString() ) # remove address in the array $_.EmailAddresses.RemoveAt($i) } } # save changes $_ | Set-Mailbox -EmailAddresses $_.EmailAddresses Write-Host }
And the Add proxy addresses script.
# Add proxy addresses # change the Get-Mailbox statement in line 8 to select only a subset of mailboxes $AddressSearchedFor = "*@domaintocopy.com" $DomainToAdd = "@newdomain.com" #get mailboxes and iterate through Get-Mailbox -ResultSize Unlimited | foreach{ $_.Alias # .emailaddresses returns array # loop each email address for ($i=$_.EmailAddresses.Count;$i -ge 0; $i--) { $address = $_.EmailAddresses[$i] #Write-Host $address # look for SMTP addresses in source if ($address.SmtpAddress -like $AddressSearchedFor ) { # get the left part of address $a = [string] $address $b = $a.indexof("@") $a = $a.substring(5, $b-5 ) #Write-Host $ # Add SMTP address Write-host("Adding smtp adress: " + $a + $DomainToAdd ) # add address in the array $_.EmailAddresses.add("smtp:" + $a + $DomainToAdd) } # save changes $_ | Set-Mailbox -EmailAddresses $_.EmailAddresses } Write-Host }
is any lost of using these scripts in applications or not?
ReplyDeleteTestKing
You dont loose anything. One script add addresses and the other one remove addresses from user accounts.
ReplyDelete