Private/Start-cChocoConfig.ps1

function Start-cChocoConfig {
    [CmdletBinding()]
    param (
        [Parameter()]
        [hashtable]
        $ConfigImport
    )
    $TSEnv = Test-TSEnv

    Write-Log -Severity 'Information' -Message "cChocoConfig:Validating Chocolatey Configurations are Setup"
    $ModulePath = (Join-Path "$ModuleBase\DSCResources" "cChocoConfig")
    Import-Module $ModulePath
    $Configurations = $ConfigImport | ForEach-Object { $_.Values | Where-Object { $_.ConfigName -ne 'MaintenanceWindow' -and $_.Name -ne 'MaintenanceWindow' } } 
    $MaintenanceWindowConfig = $ConfigImport | ForEach-Object { $_.Values  | Where-Object { $_.ConfigName -eq 'MaintenanceWindow' -or $_.Name -eq 'MaintenanceWindow' } }
    $Status = @()
    
    $Configurations | ForEach-Object {
        $DSC = $null
        $Configuration = $_
        $Object = [PSCustomObject]@{
            ConfigName = $Configuration.ConfigName
            DSC        = $null
            Ensure     = $Configuration.Ensure
            Value      = $Configuration.Value
        }
        
        $DSC = Test-TargetResource @Configuration
        if (-not($DSC)) {
            $null = Set-TargetResource @Configuration
            $DSC = Test-TargetResource @Configuration
        }
        
        $Object.DSC = $DSC
        $Status += $Object
    }
    #Remove Module for Write-Host limitations
    Remove-Module "cChocoConfig"

    Write-Log -Severity 'Information' -Message 'Starting cChocoConfig'
    $Status | ForEach-Object {
        Write-Host '--------------cChocoConfig--------------' -ForegroundColor DarkCyan
        Write-Log -Severity 'Information' -Message "ConfigName: $($_.ConfigName)"
        Write-Log -Severity 'Information' -Message "DSC: $($_.DSC)"
        Write-Log -Severity 'Information' -Message "Ensure: $($_.Ensure)"
        Write-Log -Severity 'Information' -Message "Value: $($_.Value)"               
    }
    Write-Host '--------------cChocoConfig--------------' -ForegroundColor DarkCyan

    #cChocoConfig-MaintenanceWindowConfig
    Write-Log -Severity 'Information'  -Message "cChocoConfig-MaintenanceWindowConfig:Validating Chocolatey Maintenance Window is Setup"

    $Global:MaintenanceWindowEnabled = $True
    $Global:MaintenanceWindowActive = $True

    if ($MaintenanceWindowConfig -and (-not($TSEnv))) {
        $MaintenanceWindowTest = Get-MaintenanceWindow -StartTime $MaintenanceWindowConfig.Start -EndTime $MaintenanceWindowConfig.End -EffectiveDateTime $MaintenanceWindowConfig.EffectiveDateTime -UTC $MaintenanceWindowConfig.UTC
        $Global:MaintenanceWindowEnabled = $MaintenanceWindowTest.MaintenanceWindowEnabled
        $Global:MaintenanceWindowActive = $MaintenanceWindowTest.MaintenanceWindowActive
        Write-Host '--cChocoConfig-MaintenanceWindowConfig--' -ForegroundColor DarkCyan
        Write-Log -Severity 'Information' -Message "cChocoConfig-MaintenanceWindowConfig"
        Write-Log -Severity 'Information' -Message "Name: $($MaintenanceWindowConfig.Name)"
        Write-Log -Severity 'Information' -Message "EffectiveDateTime: $($MaintenanceWindowConfig.EffectiveDateTime)"
        Write-Log -Severity 'Information' -Message "Start: $($MaintenanceWindowConfig.Start)"
        Write-Log -Severity 'Information' -Message "End: $($MaintenanceWindowConfig.End)"
        Write-Log -Severity 'Information' -Message "UTC: $($MaintenanceWindowConfig.UTC)"
        Write-Log -Severity 'Information' -Message "MaintenanceWindowEnabled: $($MaintenanceWindowEnabled)"
        Write-Log -Severity 'Information' -Message "MaintenanceWindowActive: $($MaintenanceWindowActive)"
        Write-Host '--cChocoConfig-MaintenanceWindowConfig--' -ForegroundColor DarkCyan
    }
    else {
        Write-Log -Severity 'Warning' -Message "No Defined Maintenance Window"
    }
    if ($TSEnv) {
        Write-Log -Severity 'Information' -Message "Task Sequence Environment Detected, overriding maintennce window settings"
        Write-Log -Severity 'Information' -Message "MaintenanceWindowEnabled: $($MaintenanceWindowEnabled)"
        Write-Log -Severity 'Information' -Message "MaintenanceWindowActive: $($MaintenanceWindowActive)"
    }
}