Public/Set-PDBConfig.ps1

function Set-PDBConfig {
    <#
        .SYNOPSIS
            Set PSPuppetDB module configuration

        .DESCRIPTION
            Set PSPuppetDB module configuration, and live $PDBConfig module variable

            This data is used as the default for most commands

        .PARAMETER BaseUri
            Specify a Uri to use

        .PARAMETER Certificate
            Specifies the client certificate that is used for a secure web request. Enter a variable that contains a certificate or a command or expression that gets the certificate.

            To find a certificate, use Get-PfxCertificate or use the Get-ChildItem cmdlet in the Certificate (Cert:) drive. If the certificate is not valid or does not have sufficient authority, the command fails.

            This is not serialized to the PuppetDB config on disk
        .FUNCTIONALITY
            PuppetDB
    #>

    [CmdletBinding()]
    param(
        [string]$BaseUri,
        [X509Certificate]$Certificate,
        [string]$Path = $Script:_PDBConfigXmlPath
    )

    Switch ($PSBoundParameters.Keys)
    {
        'BaseUri'     { $Script:PDBConfig.BaseUri = $BaseUri }
        'Certificate' { $Script:PDBConfig.Certificate = $Certificate }
    }

    $SelectParams = @{
        Property = $Script:PDBConfigProps
    }
    if(-not (Test-IsWindows)) {
        $SelectParams.Add('ExcludeProperty', 'Certificate')
    }

    #Write the global variable and the xml
    $Script:PDBConfig |
        Select-Object @SelectParams |
        Export-Clixml -Path $Path -Force
}