Public/Get-ExpressionCacheProvider.ps1

<#
.SYNOPSIS
Gets a registered cache provider by name.
 
.DESCRIPTION
Returns the provider object previously registered via Initialize-ExpressionCache. Useful for
inspection during tests or for provider-specific operations (e.g., reading the cache folder path).
 
.PARAMETER ProviderName
The provider name (e.g., 'LocalFileSystemCache', 'Redis').
 
.OUTPUTS
PSCustomObject (provider), or $null if not found.
 
.EXAMPLE
Get-ExpressionCacheProvider -ProviderName 'LocalFileSystemCache'
#>

function Get-ExpressionCacheProvider {
    [CmdletBinding()]
    param(
        [Alias('Name')]
        [string]$ProviderName
    )

    $result = if ($ProviderName) {
        Find-ExpressionCacheProvider -ProviderName $ProviderName
    }

    if ($null -ne $result) {
        return $result
    }

    # A specifically requested resource follows normal Get-* semantics:
    # write a non-terminating error and return no object.
    if ($ProviderName) {
        Write-Error -Message "ExpressionCache: Provider '$ProviderName' is not registered." `
            -Category ObjectNotFound `
            -TargetObject $ProviderName
        return
    }

    # No name given — return all providers
    return With-ReadLock { $script:RegisteredStorageProviders }
}