41 lines
1.8 KiB
PowerShell
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
|
|
} |