Updating ProxyAddresses, Example 6

From MyWiki
Jump to: navigation, search
Import-module activedirectory
Function Set-DefaultAddress ([string]$UserName,[string]$NewDefaultAddress) {
    $NewProxyAddresses=@()
    $AddressFoundInArray=$False
    Write-Debug "Processing user $UserName"
    $ProxyAddresses=(Get-ADUser $UserName -Properties proxyaddresses).proxyaddresses
    foreach ($ProxyAddress in $ProxyAddresses) {
        #Only evaluate smtp addresses
        if ($ProxyAddress -match "^smtp:") {
            $ProxyAddressArr=$ProxyAddress.Split(":")
            If ($ProxyAddressArr[1] -eq $NewDefaultAddress) {
                Write-Debug "Address $NewDefaultAddress found, converting to default address"
                $NewProxyAddresses+=$proxyAddressArr[0].ToUpper()+":"+$ProxyAddressArr[1]
                $AddressFoundInArray=$True
            } else {
                Write-Debug "Converting $ProxyAddress to non-default address"
                $proxyAddressArr[0]=$proxyAddressArr[0].ToLower()
                $NewProxyAddresses+=$proxyAddressArr[0].ToLower()+":"+$ProxyAddressArr[1]
            }
        } else {
            $NewProxyAddresses+=$ProxyAddress
        }
    }
    if (!$AddressFoundInArray) {
        Write-Debug "Adding address $NewDefaultAddress"
        $NewProxyAddresses+="SMTP:$NewDefaultAddress"
    }
    Set-ADUser $UserName -Replace @{ProxyAddresses=$NewProxyAddresses} -EmailAddress $NewDefaultAddress
}