Private/Write-NSPEntraHardMatchAudit.ps1

function Write-NSPEntraHardMatchAudit {
    <#
    .SYNOPSIS
        Appends one line to the audit file beside the queue. The file is never rewritten.
    #>

    [CmdletBinding()]
    param(
        [Parameter(Mandatory)][string]$Path,
        [Parameter(Mandatory)][hashtable]$Entry
    )

    Assert-NSPEntraPairingStatePath -Path $Path
    $Entry.atUtc = [datetime]::UtcNow.ToString('o')
    $Entry.operator = [Environment]::UserName
    $line = ConvertTo-Json -InputObject $Entry -Depth 4 -Compress
    [IO.File]::AppendAllText($Path, $line + "`r`n", (New-Object Text.UTF8Encoding($false)))
}