Update-UserUPN.psm1
Function Update-UserUPN { [CmdletBinding(DefaultParameterSetName = 'UsingSamAccountName')] param ( [Parameter(Mandatory, ParameterSetName = 'FromOU')] [string]$OU, [Parameter(Mandatory, ValueFromPipeline, ParameterSetName = 'UsingSamAccountName', Position = 0)] [string]$SamAccountName, [Parameter()] [switch] $ReportOnly ) Process { $params = @{ Properties = 'EmailAddress', 'Description' } if ($OU) { $params['Filter'] = { Enabled -eq $true } $params['SearchBase'] = $OU } elseif ($SamAccountName) { $params['Identity'] = $SamAccountName } $users = Get-ADUser @params if ($ReportOnly) { $users | Select-Object UserPrincipalName, EmailAddress, Description | Sort-Object EmailAddress } else { foreach ($user in $users) { Set-ADUser -Identity $user.SamAccountName -UserPrincipalName $user.EmailAddress } } } } |