public/Set-AxisPSConfig.ps1

<#
.SYNOPSIS
Sets the configuration for the AxisPowerShell module.

.DESCRIPTION
The Set-AxisPSConfig function is used to change the behavior when values are not provided.

.PARAMETER FirmwareFolder
Specifies the path to the firmware folder.

.PARAMETER EnableCertificateProvisioning
Adds the certificate deployment stage to New-AxisProvisioningJob, using the default certificate authority
(see New-AxisCertificateAuthority and Set-AxisPSCertificateTemplate).

.PARAMETER DisableCertificateProvisioning
Removes the certificate deployment stage from the provisioning job.

.EXAMPLE
Set-AxisPSConfig -FirmwareFolder "C:\Firmware"

This example sets the firmware folder path to "C:\Firmware".

#>

function Set-AxisPSConfig {
    [cmdletbinding(DefaultParameterSetName='LoggingOn')]
    Param(
        [Parameter(ParameterSetName='LoggingOn')]
        [Parameter(ParameterSetName='LoggingOff')]
        [String]$FirmwareFolder,

        [Parameter(ParameterSetName='LoggingOn')]
        [Parameter(ParameterSetName='LoggingOff')]
        [String]$LogPath,

        [Parameter(ParameterSetName='LoggingOn')]
        [Parameter(ParameterSetName='LoggingOff')]
        [String]$ProvisioningSnapshotPath,

        [Parameter(ParameterSetName='LoggingOn')]
        [Parameter(ParameterSetName='LoggingOff')]
        [String]$DNSSuffix,

        [Parameter(ParameterSetName='LoggingOn')]
        [Switch]$EnableLogging,

        [Parameter(ParameterSetName='LoggingOff')]
        [Switch]$DisableLogging,

        [Parameter(ParameterSetName='LoggingOn')]
        [Parameter(ParameterSetName='LoggingOff')]
        [Switch]$EnableCertificateProvisioning,

        [Parameter(ParameterSetName='LoggingOn')]
        [Parameter(ParameterSetName='LoggingOff')]
        [Switch]$DisableCertificateProvisioning
    )
    
    if($FirmwareFolder) {
        $Config.FirmwareFolder = $FirmwareFolder
    }
    if($LogPath) {
        $Config.LogPath = $LogPath
    }
    if ($ProvisioningSnapshotPath) {
        $Config.ProvisioningSnapshotPath = $ProvisioningSnapshotPath
    }
    if ($DNSSuffix) {
        $Config.DNSSuffix = $DNSSuffix
    }
    if($EnableLogging) {
        $Config.LogEnabled = $true
    }
    if ($DisableLogging) {
        $Config.LogEnabled = $false
    }
    if($EnableCertificateProvisioning) {
        if(!$Config.Certificate.DefaultAuthority) {
            Throw "No default certificate authority is configured. Run New-AxisCertificateAuthority first."
        }
        $Config.ProvisionCertificate = $true
    }
    if($DisableCertificateProvisioning) {
        $Config.ProvisionCertificate = $false
    }

    Write-ModuleConfiguration
}