03-oct: superguardado automático

This commit is contained in:
juanminsanz
2026-10-03 21:03:27 +02:00
parent 4fa9c2ae5b
commit 3f20313f6d
2 changed files with 83 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
# bootstrap_autologon_juanjo.ps1
# Migra la infraestructura a la cuenta local de autologon (juanjo).
# Se ejecuta UNA sola vez, en el primer inicio de sesion de juanjo (via RunOnce HKLM).
# No requiere administrador (registra tareas del usuario actual + config git de usuario).
$ErrorActionPreference = 'Continue'
$log = Join-Path $env:USERPROFILE 'bootstrap_autologon.log'
Start-Transcript -Path $log -Force | Out-Null
Write-Output "=== BOOTSTRAP AUTOLOGON $(Get-Date -Format s) ==="
Write-Output "Usuario: $env:USERDOMAIN\$env:USERNAME"
$infra = 'C:\Users\juanm\Documents\Github\INFRAESTRUCTURA'
$bib = 'C:\Users\juanm\Documents\Github\biblioteca_negocio_prolongo'
$pwsh = Join-Path $env:SystemRoot 'System32\WindowsPowerShell\v1.0\powershell.exe'
# 1) Git: identidad + safe.directory (los repos son de otro usuario) + helper
git config --global user.name "juanminsanz"
git config --global user.email "desarrollo@faccsa.es"
git config --global --add safe.directory '*'
git config --global credential.helper manager
# 2) Credenciales de Gitea reutilizando el token del remote de INFRAESTRUCTURA (sin mostrarlo)
try {
$remote = git -C $infra remote get-url origin 2>$null
if ($remote -match 'https://([^:]+):([^@]+)@([^/]+)/') {
$u = $matches[1]; $tok = $matches[2]; $hostname = $matches[3]
$credPath = Join-Path $env:USERPROFILE '.git-credentials'
"https://${u}:${tok}@${hostname}" | Set-Content -Path $credPath -Encoding ascii
git config --global credential.helper store
Write-Output "[OK] Credenciales git (store) configuradas."
} else {
Write-Output "[WARN] No se pudo extraer token del remote; se usara Git Credential Manager."
}
} catch { Write-Output "[WARN] credenciales git: $_" }
# 3) Instalar/registrar OmniRoute Watchdog + Monitor Estado + watchers para este usuario
try {
& (Join-Path $infra 'scripts\instalar_global.ps1')
Write-Output "[OK] instalar_global.ps1 ejecutado."
} catch { Write-Output "[ERROR] instalar_global.ps1: $_" }
# 4) MorningRoutine Prolongo para este usuario (abre apps al iniciar sesion)
try {
if (Get-ScheduledTask -TaskName 'MorningRoutine Prolongo' -ErrorAction SilentlyContinue) {
Unregister-ScheduledTask -TaskName 'MorningRoutine Prolongo' -Confirm:$false
}
$action = New-ScheduledTaskAction -Execute $pwsh -Argument "-WindowStyle Hidden -ExecutionPolicy Bypass -File `"$infra\scripts\morning_routine\arranque_apps.ps1`""
$trigger = New-ScheduledTaskTrigger -AtLogOn -User $env:USERNAME
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable -MultipleInstances IgnoreNew
$principal = New-ScheduledTaskPrincipal -UserId "$env:USERDOMAIN\$env:USERNAME" -LogonType Interactive -RunLevel Limited
Register-ScheduledTask -TaskName 'MorningRoutine Prolongo' -Action $action -Trigger $trigger -Settings $settings -Principal $principal -Description 'Abre apps al iniciar sesion (migrado a cuenta autologon).' -Force | Out-Null
Write-Output "[OK] MorningRoutine Prolongo registrada."
} catch { Write-Output "[ERROR] MorningRoutine: $_" }
Write-Output "--- TAREAS REGISTRADAS ---"
Get-ScheduledTask | Where-Object { $_.TaskName -match 'OmniRoute|Monitor Estado|Telegram Watcher|Recordatorios|Shutdown Listener|MorningRoutine' } | Select-Object TaskName,State | Format-Table -AutoSize
Write-Output "=== FIN BOOTSTRAP $(Get-Date -Format s) ==="
Stop-Transcript | Out-Null