diff --git a/scripts/Publish-GiteaRelease.ps1 b/scripts/Publish-GiteaRelease.ps1 index 8e13538..7c83914 100644 --- a/scripts/Publish-GiteaRelease.ps1 +++ b/scripts/Publish-GiteaRelease.ps1 @@ -120,6 +120,7 @@ Bootstrap reproducible para el laboratorio SGU. - El Auth Broker clasifica sin tareas programadas cada cuenta autenticada: `AL` se agrega a `SGU-Alumnos`, `AD` a `SGU-Administrativos` y `DO` a `SGU-Docentes`; el bootstrap crea cada grupo dentro de la OU de su rol y migra idempotentemente cualquier grupo heredado sin cambiar su SID. - El Auth Broker resuelve la dirección guardada de administrativos y docentes mediante `GetDireccion`, `GetLocalidadListado` y `GetColoniasListado`, evitando conservar los valores transitorios `Seleccione...` de los controles dinámicos de SGU. - El enrolamiento y la reparación de clientes Windows crean y verifican idempotentemente la cuenta local estándar `alumno`, sin pertenencia al grupo de administradores. +- La descripción de la cuenta local administrada respeta el límite de 48 caracteres de Windows 10 Enterprise. - El enriquecimiento obtiene el sexo de los módulos SGU de personal/alumnos, lo conserva como la línea administrada `SGU-Gender: Male|Female` en Notas de AD y adapta el fondo de Windows/Linux; cuando falta utiliza redacción neutral. - El servidor configura WEF/WEC para registrar sesiones y fallos, inventariar el estado alcanzable de las máquinas cada cinco minutos y conservar durante 183 días tanto esos eventos como el diagnóstico estructurado del Auth Broker. - Windows Home se detecta y se rechaza con una explicación, ya que no admite unión a Active Directory ni RDP host. diff --git a/scripts/Set-SguStandardLocalUser.ps1 b/scripts/Set-SguStandardLocalUser.ps1 index f4c02f0..b176b53 100644 --- a/scripts/Set-SguStandardLocalUser.ps1 +++ b/scripts/Set-SguStandardLocalUser.ps1 @@ -5,7 +5,7 @@ param() $ErrorActionPreference = 'Stop' $userName = 'alumno' $plainTextPassword = 'ingenieria' -$description = 'Cuenta local estandar de recuperacion para equipos SGU' +$description = 'Cuenta local estandar SGU para recuperacion' $identity = [Security.Principal.WindowsIdentity]::GetCurrent() $principal = [Security.Principal.WindowsPrincipal]::new($identity) diff --git a/tests/ClientEnrollmentScripts.Tests.ps1 b/tests/ClientEnrollmentScripts.Tests.ps1 new file mode 100644 index 0000000..3bb3a4e --- /dev/null +++ b/tests/ClientEnrollmentScripts.Tests.ps1 @@ -0,0 +1,31 @@ +$repositoryRoot = (Resolve-Path (Join-Path $PSScriptRoot '..')).Path +$localUserScriptPath = Join-Path $repositoryRoot 'scripts\Set-SguStandardLocalUser.ps1' + +$tokens = $null +$parseErrors = $null +$scriptAst = [Management.Automation.Language.Parser]::ParseFile( + $localUserScriptPath, + [ref]$tokens, + [ref]$parseErrors) +if ($parseErrors.Count -gt 0) { + throw ($parseErrors -join [Environment]::NewLine) +} + +$descriptionAssignment = $scriptAst.Find({ + param($node) + $node -is [Management.Automation.Language.AssignmentStatementAst] -and + $node.Left.Extent.Text -eq '$description' + }, $true) +$description = $descriptionAssignment.Right.Extent.Text.Trim("'") + +Describe 'SGU Windows client enrollment scripts' { + It 'keeps the local-user description within the Windows 10 limit' { + ($description.Length -le 48) | Should Be $true + } + + It 'declares the managed local student account' { + $source = Get-Content -LiteralPath $localUserScriptPath -Raw + $source | Should Match "\$userName = 'alumno'" + $source | Should Match "\$plainTextPassword = 'ingenieria'" + } +}