Script repository

Save primary SMTP address to a property

Updated on: Jan 18, 2026, Views: 909

Exchange

The script updates the specified property with the value of the primary SMTP address. To execute the script, create a business rule, custom command or scheduled task configured for the required object type.

In the script, the $propertyName variable specifies the name of the property to update.

$propertyName = "userPrincipalName" # TODO: modify me

# Get current property value.
try
{
    $property = $Context.TargetObject.Get($propertyName)
}
catch
{
    $property = $NULL
}


# Get the current e-mail addresses.
$mailboxParams = $Context.TargetObject.GetMailParameters()
$emailAddresses = $mailboxParams.EmailAddresses
$operation = "ADS_PROPERTY_NONE"

# Find the current primary address.
for ($i = 0; $i -lt $emailAddresses.Count; $i++)
{
    $emailAddress = $emailAddresses.GetAddress($i,[ref]$operation)
    if ($emailAddress.AddressType -ne "ADM_EXCHANGE_ADDRTYPE_SMTP")
    {
        continue
    }
    
    if (-not($emailAddress.IsPrimary))
    {
        continue
    }
    
    if ($emailAddress.Address -ne $property)
    {
        # Update username
        $Context.TargetObject.Put($propertyName, $emailAddress.Address)
        $Context.TargetObject.SetInfo()
    }
    break
}

Comments 0

You must be signed in to comment.

    Got questions?

    Support Questions & Answers

    We use cookies to improve your experience.
    By your continued use of this site you accept such use.
    For more details please see our privacy policy and cookies policy.