Functions/Get-AzDoAccessToken.ps1

Function Get-AzDoAccessToken{
<#
    .SYNOPSIS
        Gets the bearer token needed for REST API calls.
 
    .DESCRIPTION
        Gets the bearer token needed for REST API calls. This token is saved to the script scope.
 
    .EXAMPLE
        $PersonalAccessToken = "c123456f-a1cd-6fv7-bh73-123r5t6y7u8i9"
        $Organisation = 'CentralIndustrial'
        $Project = 'TeamDevOps'
 
        Get-AzDoAccessToken -PersonalAccessToken $PersonalAccessToken -Organisation $Organisation -Project $Project
 
        This command will produce an access token which is added as a script scope variable.
 
    .EXAMPLE
        $PersonalAccessToken = "c123456f-a1cd-6fv7-bh73-123r5t6y7u8i9"
        $Organisation = 'CentralIndustrial'
        $Project = 'TeamDevOps'
 
        Get-AzDoAccessToken -PersonalAccessToken $PersonalAccessToken -Organisation $Organisation -Project $Project -Verbose
        $AccessToken
 
        This command will produce an access token which is added as a script scope variable. It then displays the token on screen
 
    .PARAMETER PersonalAccessToken
        This is your Personal Access Token you get from Azure DevOps
 
    .PARAMETER Organisation
        This is the Organisation your Azure DevOps Project is in.
 
    .PARAMETER Project
        This is the Project/Team your resources are in.
 
    .INPUTS
        Input is from command line or called from a script.
 
    .OUTPUTS
        This will create a bearer token that will be used in future API calls.
 
    .NOTES
        Author: Lars Panzerbjørn
        Creation Date: 2021.07.30
#>

    [CmdletBinding()]
    param
    (
        [Parameter(Mandatory)]
        [Alias('PAT')]
        [string]$PersonalAccessToken,

        [Parameter(Mandatory)]
        [Alias('Company')]
        [string]$Organisation,

        [Parameter(Mandatory)]
        [Alias('TeamName')]
        [string]$Project
    )

        Write-Verbose "Starting $($MyInvocation.Mycommand)"

        $Script:BaseUri            = "https://dev.azure.com/$($Organisation)/"
        $Script:Organisation    = $Organisation
        $Script:Project            = $Project
        $Script:JsonContentType = 'application/json'
        $Script:Token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($PersonalAccessToken)"))
        $Script:Header = @{Authorization = 'Basic ' + $Token;accept=$JsonContentType}
        Write-Verbose "Token is: $($Token)"
}