Functions/Private/Config/Get-JCRConfig.ps1

function Get-JCRConfig {
    [CmdletBinding()]
    param (
        [Parameter(
            DontShow,
            HelpMessage = 'Returns Config.json with value, copy, write properties'
        )]
        [switch]
        $asObject
    )

    begin {
        $moduleRoot = $JCRScriptRoot
        $configFilePath = Join-Path -Path $ModuleRoot -ChildPath 'Config.json'

        if (-Not (Test-Path -Path $configFilePath)) {
            Write-Host "write new settings file $configFilePath"
            # Create new file with default settings
            New-JCRConfig
        }
    }

    process {
        if (-Not $asObject) {
            $rawConfig = Get-Content -Path $configFilePath | ConvertFrom-Json
            $config = @{}
            foreach ($item in $rawConfig.PSObject.Properties) {
                # $config.$item
                $config.Add($item.Name, @{})
                foreach ($setting in $item.value.PSObject.Properties) {
                    # $setting
                    $config.$($Item.Name).Add($setting.Name, $setting.value.value)
                }
            }
        } else {
            # Get Contents
            $config = Get-Content -Path $configFilePath | ConvertFrom-Json
        }
    }
    end {
        return $config
    }
}