Primary SMTP proxy address change

This topic contains 6 replies, has 2 voices, and was last updated by  Nemanja Jovic 11 months, 1 week ago.

  • Author
  • #77185

    Nemanja Jovic

    Hello everyone,

    I have such a complex task to acomplish(probably complex for me), basically we have one forest/domain that is syncing with O365.
    Primary SMTP address is not leading any specific format, for example first+lastname , for some users it is last+firstname
    We have to get all of the user SMTP addreses, that can be done easy; get-aduser -filter * -property * | where {$_.ProxyAddresses -clike "SMTP*"}

    Question is, how we can preserve everything before , so the user first+last or last+first name don't change, and change only domain name.

    Help will be greatly appreciated !

    Kind regards,

  • #77191

    Simon B

    Just to clarify a few things.
    1) Do you want the existing SMTP address preserved as a secondary address?
    2) The new SMTP address you want to be the same as the old one just with a new domain name?

    • #77197

      Nemanja Jovic


      We don't want to add secondary SMTP address, we want to change the primary one, as you said, just to change domain while preserving everything behind

      Kind regards,

  • #77200

    Simon B

    ok assuming you know how to get the users current smtp address to get the bit before the @ sysmbol you could use

    $local = $SMTP.local # Where $SMTP is the users SMTP Address

    with this you could create the new SMTP address
    $NewSMTP = $Local + "@" + $newdomainname

    Then using set-mailbox you will be able to set the new primary SMTP address

    • #77202

      Nemanja Jovic

      This looks excellent, but I am still struggling to complete it, since I am not still really good with parsing informations, advise please if you have some tips 🙂

      So I did this for my user for example;

      $nemanja = Get-ADUser -Filter * -Properties * | Where-Object {$_.Name -like "nemanja.jovic"}

      After I call;


      But it is coming with multiple SMTP and smtp addresses, how I can parse from here just SMTP for further script process?


  • #77205

    Simon B

    try this

    Get-ADUser -Identity -Properties ProxyAddresses | Where-Object {$_.ProxyAddresses -cmatch "SMTP"}

    This should only bring back the primary address as it is case sensitive and onlt the primary will have SMTP in caps

  • #77296

    Nemanja Jovic

    This is how I managed to complete this task;

    $UserCredential = Get-Credential
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri -Credential $UserCredential -Authentication Basic -AllowRedirection
    Import-PSSession $Session
    Get-ADUser -SearchBase "OU=TEST,DC=DOMAIN,DC=GLOBAL" -Filter * -Properties * | Where-object {$_.ProxyAddresses -clike "SMTP:*"} | Select-Object UserPrincipalName,SamAccountName | Export-Csv -Path C:\users.csv
    $userobjects = Import-Csv -Path C:\users.csv
    foreach ($user in $userobjects){
    $newdomain = "test.domain"
    $address = ((Get-Mailbox -Identity $user.UserPrincipalName).Primarysmtpaddress).toString()
    Set-ADUser -Identity $user.SamAccountName -Add @{proxyAddresses="SMTP:"+$newsmtp}
    Set-ADUser -Identity $user.SamAccountName -Remove @{proxyAddresses="SMTP:"+$address}

You must be logged in to reply to this topic.