Public/Set-Config.ps1

<#
    .SYNOPSIS
    Set the script level configuration

    .DESCRIPTION
    Sets the script level configuration

    .INPUTS
    None. You cannot pipe objects to Set-Config.

    .OUTPUTS
    None.

    .PARAMETER Config
    The configuration object
#>

function Set-Config {
    param(
        [Parameter(ValueFromPipeline)]
        [PSObject]
        $config,

        [Switch]
        $SkipIamAuthentication
    )
    Set-Variable -Name __config -Scope Script -Value $config

    $script:__sfAuth = Invoke-SfAuthenticate

    if (-not $SkipIamAuthentication) {
        # authenticate IAM using information from the salesforce org's configuration
        Invoke-IamAuthenticate
    }
}