Private/Get-FPConfiguration.ps1

function Get-FPConfiguration {
    <#
    .SYNOPSIS
        Import Control Data from Registry
    .DESCRIPTION
        Fetch data from Registry or return Default if none found
    .PARAMETER RegPath
        Registry Path (default is HKLM:\SOFTWARE\FudgePop)
    .PARAMETER Name
        Registry Value name
    .PARAMETER Default
        Data to return if no value found in registry
    .INPUTS
        Registry Key, Value Name, Default Value (if not found in registry)
    .OUTPUTS
        Information returned from registry (or default value)
    #>

        [CmdletBinding()]
        param (
            [parameter(Mandatory = $False)]
            [ValidateNotNullOrEmpty()]
            [string] $RegPath = $FPRegRoot,
            [parameter(Mandatory = $True)]
            [ValidateNotNullOrEmpty()]
            [string] $Name,
            [parameter(Mandatory = $False)]
            [string] $Default = ""
        )
        if (Test-Path $RegPath) {
            Write-Verbose "registry path confirmed: $RegPath ($Name)"
            try {
                $result = Get-ItemProperty -Path $RegPath -ErrorAction Stop |
                    Select-Object -ExpandProperty $Name -ErrorAction Stop
                if ($result -eq $null -or $result -eq "") {
                    Write-Verbose "no data returned from query. using default: $Default"
                    $result = $Default
                }
            }
            catch {
                Write-Verbose "error: returning $Default"
                $result = $Default
            }
        }
        else {
            Write-Verbose "registry path does not yet exist: $RegPath"
            $result = $Default
        }
        Write-Output $result
}