Batch-inviting users with Powershell to Azure Active Directory
The script below invites users to Azure Active Directory, and the list of users is contained within invite.txt
text file (each line - email address). Unfortunately az cli
does not have this capability and the only way you can do that from a script is using AzureADPreview module. Unfortunately, this module also only works in Windows Powershell (does not work on Powershell Core on Windows).
# Import-Module AzureADPreview
# Connect-AzureAD -TenantId ...
# fetch all users first
$allUsers = Get-AzureADUser -All $True
# get emails only
$allEmails = $allUsers | Select-Object -ExpandProperty Mail
# read invite.txt - this contains list of emails to invite
$toInvite = Get-Content .\invite.txt
$notInvited = $toInvite | Where-Object { -not ($allEmails -contains $_) }
Write-Host "to invite: $($toInvite.Count), not invited yet: $($notInvited.Count)"
$invited = @()
foreach($ni in $notInvited) {
Write-Host $ni
$namePart = ($ni -split "@")[0]
$firstLast = $namePart -split "\."
$first = $firstLast[0] -replace '[^a-zA-Z-]', ''
$last = $firstLast[1] -replace '[^a-zA-Z-]', ''
Write-Host "Inviting $first $last ($ni)"
$messageInfo = New-Object Microsoft.Open.MSGraph.Model.InvitedUserMessageInfo
$messageInfo.customizedMessageBody = "You are so special!"
New-AzureADMSInvitation `
-InvitedUserDisplayName "$first $last" `
-InvitedUserEmailAddress "$ni" `
-SendInvitationMessage $true `
-InviteRedirectUrl "any url users will be redirected to after invitation." `
-InvitedUserMessageInfo $messageInfo
$invited += $ni
}
Write-Host "invited users ($($invited.Length)):"
foreach($i in $invited) {
Write-Host $i
}
To contact me, send an email anytime or leave a comment below.