Private/Set-FPConfiguration.ps1

function Set-FPConfiguration {
    <#
    .SYNOPSIS
        Write data to Registry
    .DESCRIPTION
        Write Data to FudgePop Registry location
    .PARAMETER RegPath
        Registry Path (default is HKLM:\SOFTWARE\FudgePop)
    .PARAMETER Name
        Registry Value name
    .PARAMETER Data
        Data to store in registry value
    .INPUTS
        Registry Key (or default), Value Name, Data
    #>

        [CmdletBinding(SupportsShouldProcess = $True)]
        param (
            [parameter(Mandatory = $False)]
            [ValidateNotNullOrEmpty()]
            [string] $RegPath = $FPRegRoot,
            [parameter(Mandatory = $True)]
            [ValidateNotNullOrEmpty()]
            [string] $Name,
            [parameter(Mandatory = $True)]
            [ValidateNotNullOrEmpty()]
            [string] $Data
        )
        if (!(Test-Path $RegPath)) {
            try {
                Write-Verbose "creating new registry key root"
                New-Item -Path $RegPath -Force -ErrorAction Stop | Out-Null
                $created = $True
            }
            catch {
                Write-FPLog -Category 'Error' -Message $_.Exception.Message
                break
            }
        }
        if ($created) {
            Set-ItemProperty -Path $RegPath -Name "ModuleVersion" -Value $FPVersion -ErrorAction Stop
            Set-ItemProperty -Path $RegPath -Name "InitialSetup" -Value (Get-Date) -ErrorAction Stop
        }
        try {
            Set-ItemProperty -Path $RegPath -Name $Name -Value $Data -ErrorAction Stop
        }
        catch {
            Write-FPLog -Category 'Error' -Message $_.Exception.Message
            break
        }
        Write-Output 0
}