Public/Connect-AzAccountRestMethod.ps1
<#
.Synopsis Connect to Aure using RestMethod. .DESCRIPTION Connect to Azure using RestMethod. .EXAMPLE $Header = Connect-AzAccountRestMethod -ByTenantName "XXXXXXXXXXXXXXXXX.onmicrosoft.com" -ApplicationID "XXXXX-XXXX-XXXX-XXXXXXXXX" -ApplicationSecret "XXXXXXXXXXXXXXXXXXXXXX" $Header = Connect-AzAccountRestMethod -ByTenantName "XXXXXXXXXXXXXXXXX.XXXXX.XXXX" -ApplicationID "XXXXX-XXXX-XXXX-XXXXXXXXX" -ApplicationSecret "XXXXXXXXXXXXXXXXXXXXXX" $Header = Connect-AzAccountRestMethod -ByTenantID "XXXXXX-XXXXX-XXXX-XXXX-XXXXXXXXX" -ApplicationID "XXXXX-XXXX-XXXX-XXXXXXXXX" -ApplicationSecret "XXXXXXXXXXXXXXXXXXXXXX" #> function Connect-AzAccountRestMethod { [CmdletBinding()] [Alias()] [OutputType([int])] Param ( [Parameter(ParameterSetName = 'ByTenantID', Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=0)] [ValidateNotNullOrEmpty()] $ByTenantID, [Parameter(ParameterSetName = 'ByTenantName', Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=0)] [ValidateNotNullOrEmpty()] $ByTenantName, [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=0)] [ValidateNotNullOrEmpty()] $ApplicationID, [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=0)] [ValidateNotNullOrEmpty()] $ApplicationSecret ) Begin { Write-Host "Starting Connect-AzAccountRestMethod Function." -ForegroundColor Cyan } Process { try { $ErrorActionPreference = "Stop" if ($PScmdlet.ParameterSetName -eq 'ByTenantID') { $authUrl = "https://login.windows.net/${ByTenantID}" }else{ $authUrl = "https://login.windows.net/${ByTenantName}" } $AuthContext = [Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext]$authUrl $credentials = New-Object Microsoft.IdentityModel.Clients.ActiveDirectory.ClientCredential $ApplicationID,$ApplicationSecret $authenticationTask = $AuthContext.AcquireTokenAsync("https://management.core.windows.net/",$credentials) $authenticationTask.Wait() $authenticationResult = $authenticationTask.Result $authHeader = @{ 'Authorization'=$authenticationResult.CreateAuthorizationHeader() } Write-Host "Successfully got a BearerĀ authentication token from Azure Active Directory $DirectoryID." -ForegroundColor Cyan Write-Host "`nFor Advance you can use Access token in Invoke-RestMethod as header." -ForegroundColor DarkGray Write-Host "For Example:" -ForegroundColor DarkGray Write-Host "" -ForegroundColor DarkGray Write-Host '$Header = Connect-AzAccountRestMethod -ByTenantName "XXXXXXXXXXXXXXXXX.onmicrosoft.com" -ApplicationID "XXXXX-XXXX-XXXX-XXXXXXXXX" -ApplicationSecret "XXXXXXXXXXXXXXXXXXXXXX"' -ForegroundColor DarkGray Write-Host 'Invoke-RestMethod -Method GET -Uri https://management.azure.com/subscriptions?api-version=2016-06-01 -ContentType "application/json" -Headers $header' -ForegroundColor DarkGray return $authHeader } catch { Write-Host "`nOops something goes wrong...!!!" -ForegroundColor Red Write-Host "$_.Exception" -ForegroundColor Red } } End { Write-Host "`nEnding Connect-AzAccountRestMethod." -ForegroundColor Cyan } } |