Public/Set-KB4Config.ps1

#Credit to https://mattbobke.com/2018/11/12/building-a-powershell-module-part-3-json-config-files-are-awesome/ for inspiration
function Set-KB4Config {
    <#
        .SYNOPSIS
        Set required values to make KnowBe4 API calls.
 
        .DESCRIPTION
        Sets the API Key which is required to make any API calls.
 
        .PARAMETER ApiKey
        API Key
 
        .EXAMPLE
        Set-KB4Config -ApiKey "API_Key_goes_here"
    #>


    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true)]
        [string]$ApiKey
    )

    try {
        Write-Verbose -Message 'Checking for existing configuration...'
        $config = Get-Content -Path "$PSScriptRoot\..\config.json" -ErrorAction 'Stop' | ConvertFrom-Json
        Write-Verbose -Message 'Stored config.json found.'
    } 
    catch {
        Write-Verbose -Message 'No configuration found - starting with empty configuration.'
        $jsonString = @'
{
    "apiKey" : ""
}
'@

        $config = $jsonString | ConvertFrom-Json
    }

    if ($ApiKey) {$config.apiKey = $ApiKey}

    Write-Verbose -Message 'Setting config.json.'
    $config | ConvertTo-Json | Set-Content -Path "$PSScriptRoot\..\config.json"
}