Обновление адреса электронной почты пользователей через powershell для AzureAD - PullRequest
0 голосов
/ 10 февраля 2020

Мне было интересно, если кто-то может помочь, у нас есть пользователи в нашей организации, которые используют адрес электронной почты в верхнем регистре, некоторые приложения не могут распознать это и дают сбой. Я разработал приведенный ниже скрипт для изменения имени пользователя и отображаемых имен в нижнем регистре, однако это не меняет их адрес электронной почты. Я не хочу создавать новые почтовые ящики, так как несколько сотен пользователей имеют неправильный формат. Если бы кто-то мог указать мне правильное направление, это было бы очень полезно.

#Install-module AzureAD
#Connect-AzureAD
$Users = Get-azureADUser -filter "userPrincipalName eq 'User1@MyDomain.com'" 
$ErrorActionPreference = 'Stop'
$OutputObj  = New-Object -TypeName PSobject
$OutputObj1 = New-Object -TypeName PSobject
$SuccessOutput = @() 
$ErrorOutput = @() 
$Case = "toLower"
Function ChangeToLowerCase{

Try{
foreach ($user in $users) {
 $user | Set-AzureADUser -userPrincipalName $user.userPrincipalName.$Case()
 $user | Set-AzureADUser -identity $user.SipProxyAddress.$Case()


 #$User | Select-Object DisplayName, userPrincipalName,Mail
 $OutputObj  | Add-Member -memberType NoteProperty -name "Display Name" -value $($user.DisplayName)
 $OutputObj  | Add-Member -memberType NoteProperty -name "UPN" -value $($user.userPrincipalName)
 $OutputObj  | Add-Member -memberType NoteProperty -name "Email Address" -value $($user.Mail)
 $SuccessOutput +=$OutputObj
 $SuccessOutput | Export-csv "C:\Temp\Powershell\Completed\UPN Changes.csv" -NoTypeInformation -NoClobber -Append
  }
}
Catch{
$OutputObj1 | Add-Member -memberType NoteProperty -name "Display Name" -value $($user.DisplayName)
$OutputObj1 | Add-Member -memberType NoteProperty -name "Error Message" -value $($_.Exception.Message)
$ErrorOutput +=$OutputObj1
$ErrorOutput | Export-csv "C:\Temp\Powershell\Errors\UPN Changes Error.csv" -NoTypeInformation -NoClobber -Append
}
}
ChangeToLowerCase

Я смотрю на свойство Set-AzureAduser, однако я не могу изменить свойство mail в этой переменной.

1 Ответ

0 голосов
/ 10 февраля 2020

Хорошо, у меня возникла та же проблема после того, как мы добавили домен с заглавной буквой W. Он не изменит адрес электронной почты, потому что он не учитывает регистр.

Я создал это, чтобы решить эту проблему:

function ConvertTo-LowerW
{

  foreach ($Recipient in $Recipients)
  { 
  "1"
  $Recipient.PrimarySmtpAddress

  $SplitEmail = $Recipient.PrimarySmtpAddress.Split('@')
  $BeforeA = $SplitEmail | Select-Object -First 1
  $AfterA = ($SplitEmail | Select-Object -Last 1).ToLower()
  $NewPrimarySmtpAddress = $BeforeA + '@' + $AfterA

  $NewPrimarySmtpAddress

  switch ($Recipient.RecipientType)
  {

     'UserMailbox'
     {
        try
        {
           $Addresses = (Get-Mailbox -Identity $Recipient.PrimarySmtpAddress  -ErrorAction Stop).EmailAddresses
           $Addresses = $Addresses.Replace("SMTP:$($recipient.PrimarySmtpAddress)", "")

           Set-Mailbox -ErrorAction Stop `
              -Identity $Recipient.PrimarySmtpAddress `
              -EmailAddresses $NewPrimarySmtpAddress 

           if ($Addresses.Length -ne 0)
           {
              foreach ($Address in ($Addresses | Where-Object { $_.Length -ne 0 }) )
              {
                 $Address
                 if ($Address.Length -ne 0 )
                 {
                    Set-Mailbox -ErrorAction Stop `
                       -Identity $Recipient.PrimarySmtpAddress `
                       -EmailAddresses @{add = "$Address" } 
                 }
              }
           }
        }

        Catch
        {
           $ErrorList.Add($Recipient.PrimarySmtpAddress)
           $ErrorList.Add($_.Exception.Message)      

        }

     }

     'MailUniversalDistributionGroup'
     {
        try
        {
           $Addresses = (Get-DistributionGroup -Identity $Recipient.PrimarySmtpAddress -ErrorAction Stop).EmailAddresses
           $Addresses = $Addresses.Replace("SMTP:$($recipient.PrimarySmtpAddress)", "")

           Set-DistributionGroup -ErrorAction Stop `
              -Identity $Recipient.PrimarySmtpAddress `
              -EmailAddresses $NewPrimarySmtpAddress 

           if ($Addresses.Length -ne 0)
           {
              foreach ($Address in  ($Addresses | Where-Object { $Addresses.Length -ne 0 }))
              {
                 if ($Address.Length -ne 0 )
                 {
                    Set-DistributionGroup -ErrorAction Stop `
                       -Identity $Recipient.PrimarySmtpAddress `
                       -EmailAddresses @{add = "$Address" } 
                 }
              }
           }
        }
        catch
        {
           $ErrorList.Add($Recipient.PrimarySmtpAddress)
           $ErrorList.Add($_.Exception.Message)      
        }

     }

     'DynamicDistributionGroup'
     {
        try
        {
           $Addresses = (Get-DynamicDistributionGroup -Identity $Recipient.PrimarySmtpAddress -ErrorAction Stop).EmailAddresses
           $Addresses = $Addresses.Replace("SMTP:$($recipient.PrimarySmtpAddress)", "")

           Set-DynamicDistributionGroup -ErrorAction Stop `
              -Identity $Recipient.PrimarySmtpAddress `
              -EmailAddresses $NewPrimarySmtpAddress 

           if ($Addresses.Length -ne 0)
           {
              foreach ($Address in  ($Addresses | Where-Object { $Addresses.Length -ne 0 }))
              {
                 $Address
                 if ($Address.Length -ne 0 )
                 {
                    Set-DynamicDistributionGroup -ErrorAction Stop `
                       -Identity $Recipient.PrimarySmtpAddress `
                       -EmailAddresses @{add = "$Address" } 
                 }
              }
           }
        }
        catch
        {
           $ErrorList.Add($Recipient.PrimarySmtpAddress)
           $ErrorList.Add($_.Exception.Message)      
        }
     }

     Default
     {
        try
        {

           $Recipient.RecipientType
           $Recipient.RecipientTypeDetails
           'User has an unrecognized Recipienttype'

           Send-Email `
              -To $to `
              -Body 'Test' `
              -Subject 'User has an unrecognized Recipienttype' 
        }
        catch
        {
           $ErrorList += "$($($Recipient).PrimarySmtpAddress) has an unrecognized RecipientType $($($Recipient).Recipienttype)"
           $ErrorList.Add($Recipient.PrimarySmtpAddress)
           $ErrorList.Add($_.Exception.Message)      
        }
     }
  }
   }
 }

Я посмотрю, смогу ли я создать запись в блоге на bwit.blog относительно этого.

...