Private/Environment/Get-MsalEnvironmentByName.ps1

<#
.SYNOPSIS
    Returns the environment with this exact name, or throws.
.DESCRIPTION
    The error message lists the known environments and points to Add-MsalEnvironment.
.EXAMPLE
    (Get-MsalEnvironmentByName 'BleuCloud').GraphEndpoint
    Gets the Graph endpoint of Bleu.
.OUTPUTS
    System.Management.Automation.PSCustomObject
#>

function Get-MsalEnvironmentByName {
    [CmdletBinding()]
    [OutputType([psobject])]
    param (
        [Parameter(Mandatory = $true, Position = 0)]
        [string] $Name
    )

    $Environment = $script:ModuleState.Environments | Where-Object Name -eq $Name | Select-Object -First 1
    if (-not $Environment) {
        throw ('Unknown environment "{0}". Known environments: {1}. Add one with Add-MsalEnvironment.' -f $Name, (($script:ModuleState.Environments | ForEach-Object Name) -join ', '))
    }
    return $Environment
}