functions/Export-DbcConfig.ps1

<#
.SYNOPSIS
    Exports dbachecks configs to a json file to make it easier to modify or be used for specific configurations.

.DESCRIPTION
    Exports dbachecks configs to a json file to make it easier to modify or be used for specific configurations.

.PARAMETER Path
    The path to export to, by default is "$script:localapp\config.json"

.PARAMETER EnableException
By default, when something goes wrong we try to catch it, interpret it and give you a friendly warning message.
This avoids overwhelming you with "sea of red" exceptions, but is inconvenient because it basically disables advanced scripting.
Using this switch turns this "nice by default" feature off and enables you to catch exceptions with your own try/catch.

.PARAMETER Force
Overwrite Existing file

.EXAMPLE
    Export-DbcConfig

    Exports config to "$script:localapp\config.json"
.EXAMPLE
    Export-DbcConfig -Path \\nfs\projects\config.json

    Exports config to \\nfs\projects\config.json

.EXAMPLE
    $config = Export-DbcConfig | Invoke-Item

    Exports config to "$script:localapp\config.json" as and opens it in a default application.

.LINK
https://dbachecks.readthedocs.io/en/latest/functions/Export-DbcConfig/
#>

function Export-DbcConfig {
    [CmdletBinding()]
    [OutputType('System.String')]
    param (
        [string]$Path = "$script:localapp\config.json",
        [switch]$Force
    )

    Write-PSFMessage "Testing if $Path exists" -Level Verbose
    if (Test-Path -Path $Path) {
        if (-not $Force) {
            Write-PSFMessage "Uh-Oh - File $Path exists - use the Force parameter to overwrite (even if your name is not Luke!)" -Level Significant
            Return ''
        } else {
            Write-PSFMessage "File $Path exists and will be overwritten " -Level Verbose
        }
    }
    try {
        Get-DbcConfig | Select-Object * | ConvertTo-Json -Depth 10 | Out-File -FilePath $Path -Force -ErrorAction Stop
        # support for Invoke-Item
        Get-Item -Path $Path
        Write-PSFMessage -Message "Wrote file to $Path" -Level Verbose
    } catch {
        Stop-PSFFunction -Message $_ -Target $Path
    }
}