Public/Get-TechCareProfile.ps1

function Get-TechCareProfile {
    <#
    .SYNOPSIS
        Devuelve la lista de modulos asociada a un preset de mantenimiento.
    .DESCRIPTION
        Expande un preset (Basic, Standard o Full) a los modulos que se ejecutaran.
        El orden devuelto es el orden canonico de ejecucion: diagnosticar antes de
        reparar, reparar antes de limpiar, e informar siempre al final.
    .PARAMETER MaintenanceProfile
        Preset a expandir. Acepta los alias -Preset y -Profile.

        El parametro no se llama -Profile a secas porque $Profile es una variable
        automatica de PowerShell (la ruta del perfil de la sesion) y declararla
        como parametro dispara PSAvoidAssignmentToAutomaticVariable.
    .EXAMPLE
        Get-TechCareProfile -MaintenanceProfile Basic

        Devuelve Diagnose, Cleanup y Report.
    .EXAMPLE
        Get-TechCareProfile Full

        El preset es posicional, asi que el nombre del parametro puede omitirse.
    .EXAMPLE
        Get-TechCareProfile -Preset Standard | ForEach-Object { "Modulo: $_" }

        El alias -Preset existe para quien prefiera ese termino.
    .OUTPUTS
        System.String[]
    .LINK
        https://github.com/earbona23/TechCare
    #>

    [CmdletBinding()]
    [OutputType([string[]])]
    param(
        [Parameter(Mandatory, Position = 0)]
        [Alias('Preset', 'Profile')]
        [ValidateSet('Basic', 'Standard', 'Full')]
        [string]$MaintenanceProfile
    )

    switch ($MaintenanceProfile) {
        'Basic'    { return [string[]]@('Diagnose', 'Cleanup', 'Report') }
        'Standard' { return [string[]]@('Diagnose', 'Repair', 'Update', 'Cleanup', 'Security', 'Report') }
        'Full'     { return [string[]]@('Diagnose', 'Repair', 'Update', 'Cleanup', 'Performance', 'Security', 'Report') }
    }
}