Private/Helper/Confirm-CollectionUri.ps1

function Confirm-CollectionUri {
    <#
    .SYNOPSIS
        Validates whether the provided URI is a valid Azure DevOps collection URI.
 
    .DESCRIPTION
        This function checks if the given URI matches the expected format for Azure DevOps collection URIs.
 
    .PARAMETER Uri
        The URI to validate.
 
    .OUTPUTS
        Boolean
 
    .EXAMPLE
        Confirm-CollectionUri -Uri 'https://dev.azure.com/my-org'
 
        This will return $true.
 
    .EXAMPLE
        Confirm-CollectionUri -Uri 'https://example.com/my-org'
 
        This will throw an error indicating the URI is not valid.
    #>

    [CmdletBinding()]
    [OutputType([bool])]
    param (
        [Parameter(Mandatory)]
        [string]$Uri
    )

    begin {
        Write-Verbose ("Command: $($MyInvocation.MyCommand.Name)")
    }

    process {
        try {
            if ($Uri -notmatch '^https:\/\/([\w-]+\.)?dev\.azure\.com\/[\w-]+') {
                throw "CollectionUri must be a valid Azure DevOps collection URI (e.g., 'https://dev.azure.com/org' or 'https://vssps.dev.azure.com/org')"
            } else {
                $true
            }
        } catch {
            throw $_
        }
    }

    end {
        Write-Verbose ("Exit: $($MyInvocation.MyCommand.Name)")
    }
}