Public/Mailbox/CloudReport/Invoke-NewCloudData.ps1
function Invoke-NewCloudData { [CmdletBinding()] param ( [Parameter()] $ConvertedData ) $ErrorActionPreference = 'stop' $ConvertedList = $ConvertedData | Where-Object { $_.Type -eq 'Recipient' } foreach ($Converted in $ConvertedList) { $MeuCreated, $MeuSet = $null $GeneratedPW = [System.Web.Security.Membership]::GeneratePassword(16, 7) try { $NewParams = @{ Name = $Converted.DisplayName DisplayName = $Converted.DisplayName MicrosoftOnlineServicesID = $Converted.UserPrincipalName PrimarySMTPAddress = $Converted.UserPrincipalName Alias = $Converted.Alias Password = ConvertTo-SecureString -String $GeneratedPW -AsPlainText:$true -Force ExternalEmailAddress = $Converted.SourceInitial ErrorAction = 'Stop' } $MeuCreated = New-MailUser @NewParams Write-Host "New Meu: $($MeuCreated.DisplayName)" -ForegroundColor Green $SetParams = @{ Identity = $MeuCreated.ExternalDirectoryObjectId EmailAddresses = @{Add = $Converted.EmailAddresses -split [regex]::Escape('|') } ErrorAction = 'Stop' } if ($Converted.RecipientType -eq 'USERMAILBOX') { $SetParams['ExchangeGuid'] = $Converted.ExchangeGuid } $MeuSet = Set-MailUser @SetParams Write-Host "Set Meu: $($MeuCreated.DisplayName)" -ForegroundColor Green [PSCustomObject]@{ ResultNew = 'SUCCESS' ResultSet = 'SUCCESS' Name = $MeuCreated.Name DisplayName = $MeuCreated.DisplayName SourceType = $Converted.RecipientTypeDetails MicrosoftOnlineServicesID = $MeuCreated.MicrosoftOnlineServicesID UserPrincipalName = $MeuCreated.UserPrincipalName PrimarySMTPAddress = $MeuCreated.PrimarySMTPAddress Alias = $MeuCreated.Alias ExchangeGuid = $Converted.ExchangeGuid SourceId = $Converted.ExternalDirectoryObjectId TargetId = $MeuCreated.ExternalDirectoryObjectId Password = $GeneratedPW EmailAddresses = $Converted.ExternalEmailAddress Log = 'SUCCESS' } } catch { if ($MeuCreated -and -not $MeuSet) { [PSCustomObject]@{ ResultNew = 'SUCCESS' ResultSet = 'FAILED' Name = $MeuCreated.Name DisplayName = $MeuCreated.DisplayName SourceType = $Converted.RecipientTypeDetails MicrosoftOnlineServicesID = $MeuCreated.MicrosoftOnlineServicesID UserPrincipalName = $MeuCreated.UserPrincipalName PrimarySMTPAddress = $MeuCreated.PrimarySMTPAddress Alias = $MeuCreated.Alias ExchangeGuid = $Converted.ExchangeGuid SourceId = $MeuCreated.ExternalDirectoryObjectId TargetId = $MeuCreated.ExternalDirectoryObjectId Password = $GeneratedPW EmailAddresses = $Converted.ExternalEmailAddress Log = $_.Exception.Message } Write-Host "Set Meu failed: $($MeuCreated.DisplayName)" -ForegroundColor Red } else { [PSCustomObject]@{ ResultNew = 'FAILED' ResultSet = 'FAILED' Name = $Converted.DisplayName DisplayName = $Converted.DisplayName SourceType = $Converted.RecipientTypeDetails MicrosoftOnlineServicesID = $Converted.UserPrincipalName UserPrincipalName = $Converted.UserPrincipalName PrimarySMTPAddress = $Converted.PrimarySMTPAddress Alias = $Converted.Alias ExchangeGuid = $Converted.ExchangeGuid SourceId = $Converted.ExternalDirectoryObjectId TargetId = '' Password = $GeneratedPW EmailAddresses = $Converted.ExternalEmailAddress Log = $_.Exception.Message } Write-Host "New and Set Meu failed: $($MeuCreated.DisplayName)" -ForegroundColor Red } } } $ConvertedAzList = $ConvertedData | Where-Object { $_.Type -eq 'AzureADUser' } foreach ($ConvertedAz in $ConvertedAzList) { try { $GeneratedPW = [System.Web.Security.Membership]::GeneratePassword(16, 7) $PasswordProfile = [Microsoft.Open.AzureAD.Model.PasswordProfile]::new() $PasswordProfile.Password = $GeneratedPW $AzUserParams = @{ DisplayName = $ConvertedAz.DisplayName UserPrincipalName = $ConvertedAz.AzureADUPN MailNickName = ($ConvertedAz.AzureADUPN -split '@')[0] PasswordProfile = $PasswordProfile AccountEnabled = $true ErrorAction = 'Stop' } $NewAzADUser = New-AzureADUser @AzUserParams Write-Host "New AzureAdUser: $($NewAzADUser.DisplayName)" -ForegroundColor Green [PSCustomObject]@{ ResultNew = 'SUCCESS' ResultSet = 'SUCCESS' Name = $ConvertedAz.DisplayName DisplayName = $NewAzADUser.DisplayName SourceType = $ConvertedAz.Type MicrosoftOnlineServicesID = '' UserPrincipalName = $NewAzADUser.UserPrincipalName PrimarySMTPAddress = '' Alias = ($ConvertedAz.AzureADUPN -split '@')[0] ExchangeGuid = '' SourceId = $ConvertedAz.ExternalDirectoryObjectId TargetId = $NewAzADUser.ObjectId Password = $GeneratedPW EmailAddresses = '' Log = 'SUCCESS' } } catch { [PSCustomObject]@{ ResultNew = 'FAILED' ResultSet = 'FAILED' Name = $ConvertedAz.DisplayName DisplayName = $ConvertedAz.DisplayName SourceType = $ConvertedAz.Type MicrosoftOnlineServicesID = '' UserPrincipalName = $ConvertedAz.UserPrincipalName PrimarySMTPAddress = '' Alias = ($ConvertedAz.AzureADUPN -split '@')[0] ExchangeGuid = '' SourceId = $ConvertedAz.ExternalDirectoryObjectId TargetId = '' Password = $GeneratedPW EmailAddresses = '' Log = $_.Exception.Message } Write-Host "New AzureAdUser failed: $($NewAzADUser.DisplayName)" -ForegroundColor Red } } $ErrorActionPreference = 'continue' } |