Functions/Get-PWApplicationToken.ps1
function Get-PWApplicationToken { [cmdletbinding()] param ( [parameter(Mandatory = $true)] [string]$clientID, [parameter(Mandatory = $true)] [string]$clientSecret, [parameter(Mandatory = $true)] [ValidateSet( 'https://graph.microsoft.com','https://graph.microsoft.us','https://dod-graph.microsoft.us' )] [string]$Resource, [parameter(Mandatory = $true)] [string]$tenantName ) begin{ if ($Resource -eq 'https://graph.microsoft.com') { $AADLoginURI = 'https://login.microsoftonline.com' } elseif ($Resource -eq 'https://graph.microsoft.us') { $AADLoginURI = 'https://login.microsoftonline.us' } elseif ($Resource -eq 'https://dod-graph.microsoft.us') { $AADLoginURI = 'https://login.microsoftonline.us' } } process{ Try { $params = @{ Uri = "$AADLoginURI/$TenantName/oauth2/v2.0/token" Method = "POST" ErrorAction = "Stop" } $ReqTokenBody = @{ Grant_Type = "client_credentials" Scope = "$($Resource)/.default" client_Id = $clientID Client_Secret = $clientSecret } $TokenResponse = Invoke-RestMethod @params -Body $ReqTokenBody return $TokenResponse.access_token } catch { $_ #[System.ApplicationException]::new("Failed to aquire token") } } end{} } |