private/Start-AnsiConsoleStatus.ps1

using namespace Spectre.Console

function Start-AnsiConsoleStatus {
    param (
        [Parameter(Mandatory)]
        [string] $Title,
        [Parameter(Mandatory)]
        [Spinner] $Spinner,
        [Parameter(Mandatory)]
        [Style] $SpinnerStyle,
        [Parameter(Mandatory)]
        [scriptblock] $ScriptBlock
    )
    $resultVariableName = "AnsiConsoleStatusResult-$([guid]::NewGuid())"
    New-Variable -Name $resultVariableName -Scope "Script"
    [AnsiConsole]::Status().Start($Title, {
        param (
            $ctx
        )
        $ctx.Spinner = $Spinner
        $ctx.SpinnerStyle = $SpinnerStyle
        Set-Variable -Name $resultVariableName -Value (& $ScriptBlock $ctx) -Scope "Script"
    })
    return Get-Variable -Name $resultVariableName -ValueOnly
}