functions/Connect-AzureDevOps.ps1

function Connect-AzureDevOps {
    
    param(
        [Parameter(Mandatory)]
        [string]$OrganizationUrl,
        [Parameter(Mandatory)]
        [string]$PersonalAccessToken
    )

    $connected = $false

    $OrganizationUrl = $OrganizationUrl.TrimEnd('/').Trim().ToLower()
    $uri = ('{0}/_apis/projects?api-version=7.1' -f $OrganizationUrl)

    $method = 'GET'

    $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$PersonalAccessToken"))
    $authHeaderValue = "Basic $base64AuthInfo"

    $headers = @{
        "Authorization" = $authHeaderValue
        "Content-Type"  = "application/json"
    }

    $response = $null
    try
    { $response = Invoke-WebRequest -Uri $uri -Method $method -Headers $headers -UseBasicParsing }
    catch 
    { $response = $null }

    if (($response -ne $null) -and ($response.StatusCode -eq 200)) {

        $connected = $true

        $script:AzureDevOpsAuthHeaderValue = $authHeaderValue
        $script:AzureDevOpsOrgUrl = $OrganizationUrl
    }

    return $connected
}