Files
scripts/action1/sc-runas-system.ps1
2025-11-04 08:43:51 -06:00

41 lines
1.8 KiB
PowerShell

# -----------------------------------------------------------------
# Script: SafeCloud - RunAs System (v2 - Manejo de Exit Code)
# OBJETIVO: Ejecuta un script como SYSTEM y valida los códigos de
# salida 0 (Exito) y 1 (Exito con advertencia, ej: reg.exe)
# -----------------------------------------------------------------
# Esta variable $ScriptToRun es inyectada por la UI de Action1
Write-Host "Iniciando ejecución como SISTEMA de: $ScriptToRun"
# --- 1. Definición de Variables ---
$RutaApp = "C:\ProgramData\SafeCloud"
$Lanzador = Join-Path -Path $RutaApp -ChildPath "safecloud-run.cmd"
$Argumento = $ScriptToRun
# --- 2. EJECUCIÓN COMO SISTEMA (Manejo de Exit Code) ---
try {
Write-Host "Ejecutando: $Lanzador $Argumento"
# --- (AQUÍ ESTÁ EL CAMBIO) ---
# 1. Quitamos -ErrorAction Stop para que el try/catch no falle con un Exit Code 1.
# 2. Añadimos -PassThru para que Start-Process nos devuelva el objeto del proceso.
$process = Start-Process -FilePath $Lanzador -ArgumentList $Argumento -Wait -NoNewWindow -PassThru
$exitCode = $process.ExitCode
Write-Host "Proceso finalizado. Código de salida (Exit Code): $exitCode"
# 3. Validamos el código de salida manualmente.
# Aceptamos 0 (Exito estándar) y 1 (Exito de 'reg.exe')
if ($exitCode -eq 0 -or $exitCode -eq 1) {
Write-Host "Ejecución como SISTEMA completada exitosamente."
} else {
# Si es cualquier otro código, ahora sí lo reportamos como un error real.
Write-Error "ERROR FATAL: El proceso devolvió un código de error inesperado: $exitCode"
exit $exitCode
}
} catch {
# Este 'catch' ahora solo atrapará errores de PowerShell (ej: si no se encuentra safecloud-run.cmd)
Write-Error "ERROR FATAL de PowerShell. Detalles: $_"
exit 1
}