Get-AzureADCredential.ps1
function Get-AzureADCredential { [OutputType([bool], [PSCredential])] [CmdletBinding()] param ( # Maximum amount of Azure Credential tries. [uint16]$MaxTry = 3 ) $Regex = "[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?" try { $Counter = 1 do { $AzureADCredential = Get-Credential -Message 'UserPrincipalName in Azure AD to access Office 365.' if ($AzureADCredential.UserName -match $Regex) { Write-Verbose -Message 'Credential match the regex.' $AzureADCredential break } if ($Counter -lt $MaxTry) { Write-Warning -Message 'Credentials does not match a valid UserPrincipalName in AzureAD, please provide a corrent UserPrincipalName.' Write-Warning -Message ('Try {0} of {1}' -f ($Counter + 1), $MaxTry) } elseif ($Counter -ge $MaxTry) { Write-Error -Message 'Credentials does not match a UserPrincipalName in AzureAD' -Exception 'System.Management.Automation.SetValueException' -Category InvalidResult -ErrorAction Stop break } $Counter++ } # Regular expression for a valid UserPrincipalName. while ($AzureADCredential.UserName -notmatch $Regex) #"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?") } catch { Write-Verbose -Message ('Problem with Credentials - {0}' -f $_.Exception.Message) return $false } } |