The modified script below will send error messages and display names to a log file in addition to showing them on screen:
$LogFile = "$PSScriptRoot\Log.csv"
Clear-Content -Path $LogFile -Confirm -ErrorAction SilentlyContinue
$users = $null
#$users = <a CSV file with user list to be created>
foreach ($user in $users){
try {
$PasswordProfile = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile
$PasswordProfile.Password = $user.Password
$PasswordProfile.ForceChangePasswordNextLogin = $false
$SignInName = New-Object -TypeName Microsoft.Open.AzureAD.Model.SignInName
$SignInName.Type = "emailAddress"
$SignInName.Value = $user.email
New-AzureADUser -DisplayName $user.DisplayName `
-AccountEnabled $true `
-SignInNames $SignInName `
-MailNickName $($User.DisplayName).replace(" ","-") `
-Mobile $User.Mobile `
-GivenName $user.DisplayName `
-PasswordProfile $PasswordProfile `
-CreationType LocalAccount `
-JobTitle "Customer" `
-CompanyName "Basix-Batch1" `
-PostalCode $user.PostalCode `
-ErrorAction Stop
}
Catch {
[PSCustomObject]@{
'UserName' = $user.DisplayName
'Message' = $Error[0].exception.Message
} | Export-Csv $LogFile -Append -NoTypeInformation
$ErrorMessage = $Error[0].exception.Message
Write-Warning "Error creating user $($user.DisplayName). $ErrorMessage"
}
}
Please don't forget to upvote and "Accept as answer" if I answered your question.