Private/Assert-NSPEntraPairingSession.ps1

function Assert-NSPEntraPairingSession {
    <#
    .SYNOPSIS
        Throws, naming the reconnect command, unless the Graph session holds a purpose's scopes.
    #>

    [CmdletBinding()]
    param(
        [Parameter(Mandatory)][ValidateSet('Preflight', 'HardMatch')][string]$Purpose,
        [Parameter(Mandatory)][guid]$TenantId
    )

    $required = @(Get-NSPEntraPairingGraphScopes -Purpose $Purpose)
    $reconnect = "Run: Connect-NSPEntraPairingGraph -TenantId '$TenantId' -Purpose $Purpose"
    $context = Connect-NSPGraph -Scopes $required -Optional
    if (-not $context) { throw "No Graph session. $reconnect" }
    $missing = @($required | Where-Object { $_ -notin @($context.Scopes) })
    if ($missing.Count) { throw "The Graph session lacks $($missing -join ', '). $reconnect" }
}