Public/Connect-PipelineLogging.ps1

<#
.SYNOPSIS
Connects to Azure DevOps Pipeline Logging module.

.EXAMPLE
Connect-PipelineLogging
#>

function Connect-PipelineLogging {
    [CmdletBinding(DefaultParameterSetName = "default")]

    Param
    (
        [Parameter(Mandatory = $true)]
        [SecureString] $PAT,

        [Parameter(Mandatory = $true)]
        [string] $Organization,

        [Parameter(Mandatory = $true)]
        [string] $Project
    )
    
    Process {
        $Script:Headers = @{
            Authorization = "Basic $([System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$([Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($PAT)))")))"
        }
        $Script:Organization = $Organization
        $Script:Project = $Project
        $Script:ProjectResource = Get-PipelineLoggingResource -Url "https://dev.azure.com/$($Organization)/_apis/projects/$($Project)" -Single

        if(!$Script:ProjectResource) {
            throw "Unable to get project '$Project' in organization '$Organization'"
        } else {
            Write-Verbose "Connected to project '$Project' ($($Script:ProjectResource.id)) in organization '$Organization'"
        }
    }
}