function Get-AuthHeader { <# .SYNOPSIS Returns an HTTP Authentication/Authorization Header .PARAMETER ApiUserUsername TeamCity User Username to use for building a Basic Auth HTTP Header .PARAMETER ApiUserPassword TeamCity User Password to use for building a Basic Auth HTTP Header .PARAMETER BearerToken A Bearer Token to use for building a Bearer Token Auth HTTP Header .PARAMETER GetBearerToken Call Get-BearerToken function .PARAMETER TokenFilePath Path(optional) to file containing the bearer token to use when calling Get-BearerToken #> [CmdletBinding()] [OutputType([string])] param( [Parameter(Mandatory = $false)] [string]$ApiUserUsername = $null, [Parameter(Mandatory = $false)] [string]$ApiUserPassword = $null, [Parameter(Mandatory = $false)] [string]$BearerToken = $null, [Parameter(Mandatory = $false)] [switch]$GetBearerToken, [Parameter(Mandatory = $false)] [Alias("Path")] [string]$TokenFilePath = $null ) $logLead = Get-LogLeadName $authHeaderPatternBearer = "Bearer {0}" if ($GetBearerToken) { Write-Host "$logLead : Getting token" $splat = @{} if ($null -ne $TokenFilePath) { Write-Host "$logLead : Passing user supplied path - $TokenFilePath" $splat.TokenFilePath = $TokenFilePath } $gotBearerToken = Get-BearerToken @splat $authHeaderValue = ($authHeaderPatternBearer -f $gotBearerToken) } elseif ([string]::IsNullOrEmpty($ApiUserUsername) -or [string]::IsNullOrEmpty($ApiUserPassword)) { Write-Host "$logLead : Using supplied token" $authHeaderValue = ($authHeaderPatternBearer -f $BearerToken) } else { Write-Host "$logLead : Using auth pair" $authorizationPair = "$($apiUserUsername):$($apiUserPassword)" $encodedCredentials = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($authorizationPair)) $authHeaderValue = "Basic $encodedCredentials" } $headers = @{ Authorization = $authHeaderValue Accept = "application/json" } Write-Host "$logLead : Header creation complete" return $headers }