Private/Initialize-TechCareState.ps1

function Initialize-TechCareState {
    <#
    .SYNOPSIS
        Deja el estado de ejecucion del modulo en limpio.
    .DESCRIPTION
        Invoke-TechCare lo llama al empezar. Sin este reinicio, una segunda pasada
        en la misma sesion de PowerShell heredaria los resultados y el log de la
        primera, y el informe mezclaria dos ejecuciones como si fueran una.

        Deliberadamente NO declara ShouldProcess: el cargador del modulo lo invoca
        al importar, y si respetase -WhatIf una sesion con $WhatIfPreference = $true
        importaria el modulo con el estado sin inicializar. Tampoco toca el sistema:
        solo memoria del propio modulo.
    #>

    [CmdletBinding()]
    [OutputType([void])]
    param()

    $script:State = @{
        RunId      = [guid]::NewGuid().ToString('N').Substring(0, 8)
        StartedUtc = (Get-Date).ToUniversalTime()
        Preset     = 'None'
        Apply      = $false
        LogPath    = $null
        ReportPath = $null
        Log        = New-Object -TypeName System.Collections.ArrayList
        Results    = New-Object -TypeName System.Collections.ArrayList
        Branding   = @{ TechnicianName = ''; CompanyName = ''; ContactInfo = '' }
        Admin      = $false
        Managed    = $false
        ManagedBy  = @()
    }
}