AzureSettings.psm1
Import-Module MSAL.PS Add-Type -TypeDefinition @" public enum AccessType { AsUser, AsApp } public enum AppName { IMAP, POP } "@ function Get-OutlookEndpoint ( [Microsoft.Identity.Client.AzureCloudInstance]$AzureCloudInstance = [Microsoft.Identity.Client.AzureCloudInstance]::AzurePublic ) { <# .SYNOPSIS Get the endpoint for Outlook in various Azure cloud instances. .DESCRIPTION This method returns the endpoint for Outlook in various Azure cloud instances. .PARAMETER AzureCloudInstance Azure instance name. .INPUTS None. You cannot pipe objects to Get-OutlookEndpoint. .OUTPUTS It returns an string of the endpoint for Outlook in various Azure cloud instances. .EXAMPLE PS>Get-OutlookEndpoint -AzureCloudInstance AzurePublic #> switch ($AzureCloudInstance) { "AzureChina" { return "partner.outlook.cn" } "AzureUsGovernment" { return "outlook.office365.us" } "AzurePublic" { return "outlook.office365.com" } } } function Get-Port ([AppName]$AppName) { <# .SYNOPSIS Get the port for various apps. .DESCRIPTION This method returns the port for various apps. .PARAMETER AppName Applicaiton of the access token. E.g. IMAP, POP. .INPUTS None. You cannot pipe objects to Get-Port. .OUTPUTS It returns the port number. .EXAMPLE PS>Get-Port -AppName IMAP #> switch ($AppName) { "IMAP" { return 993 } "POP" { return 995 } } } function Get-Scope ( [AppName]$AppName, [AccessType]$AccessType, [Microsoft.Identity.Client.AzureCloudInstance]$AzureCloudInstance = [Microsoft.Identity.Client.AzureCloudInstance]::AzurePublic ) { <# .SYNOPSIS Get the scope for requesting an access token. .DESCRIPTION This method returns the scope for requesting an access token. .PARAMETER AppName Applicaiton of the access token. E.g. IMAP, POP. .PARAMETER AccessType As user or as an app. .PARAMETER AzureCloudInstance Azure instance name. .INPUTS None. You cannot pipe objects to Get-Scope. .OUTPUTS It returns an string of the required scope. .EXAMPLE PS>Get-Scope -AppName IMAP -AccessType "AsApp" .EXAMPLE PS>Get-Scope -AppName POP -AccessType "AsApp" -AzureCloudInstance AzureUsGovernment #> $endpoint = Get-OutlookEndpoint -AzureCloudInstance $AzureCloudInstance if (!$endpoint) { return $null } switch ($AccessType) { "AsApp" { return "https://$endpoint/.default" } "AsUser" { switch ($AppName) { "IMAP" { return "https://$endpoint/IMAP.AccessAsUser.All" } "POP" { return "https://$endpoint/POP.AccessAsUser.All" } } } } } function Get-Scp ( [AppName]$AppName, [AccessType]$AccessType ) { <# .SYNOPSIS Get the scope that should be included in the returned access token. .DESCRIPTION This method returns the scope that should be included in the returned access token. .PARAMETER AppName Applicaiton of the access token. E.g. IMAP, POP. .PARAMETER AccessType As user or as an app. .INPUTS None. You cannot pipe objects to Get-Scp. .OUTPUTS It returns an string of the required scope. .EXAMPLE PS>Get-Scp -AppName IMAP -AccessType "AsApp" #> switch ($AccessType) { "AsApp" { switch ($AppName) { "IMAP" { return "IMAP.AccessAsApp" } "POP" { return "POP.AccessAsApp" } } } "AsUser" { switch ($AppName) { "IMAP" { return "IMAP.AccessAsUser.All" } "POP" { return "POP.AccessAsUser.All" } } } } } function Get-Aud ( [Microsoft.Identity.Client.AzureCloudInstance]$AzureCloudInstance = [Microsoft.Identity.Client.AzureCloudInstance]::AzurePublic ) { <# .SYNOPSIS Get the Audience for requesting an access token. .DESCRIPTION This method returns the Audience for requesting an access token. .PARAMETER AzureCloudInstance Azure instance name. .INPUTS None. You cannot pipe objects to Get-Aud. .OUTPUTS It returns an string of the Audience. .EXAMPLE PS>Get-Aud -AzureCloudInstance AzurePublic #> $endpoint = Get-OutlookEndpoint -AzureCloudInstance $AzureCloudInstance if ($endpoint) { return "https://$endpoint" } return $null } |