Update action1/sc-runas-system.ps1
Manejo de códigos de error.
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
# -----------------------------------------------------------------
|
||||
# Script: SafeCloud - RunAs System (Ruta Final C:\ProgramData\SafeCloud)
|
||||
# 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 ---
|
||||
@@ -9,12 +12,30 @@ $RutaApp = "C:\ProgramData\SafeCloud"
|
||||
$Lanzador = Join-Path -Path $RutaApp -ChildPath "safecloud-run.cmd"
|
||||
$Argumento = $ScriptToRun
|
||||
|
||||
# --- 2. EJECUCIÓN COMO SISTEMA ---
|
||||
# --- 2. EJECUCIÓN COMO SISTEMA (Manejo de Exit Code) ---
|
||||
try {
|
||||
Write-Host "Ejecutando: $Lanzador $Argumento"
|
||||
Start-Process -FilePath $Lanzador -ArgumentList $Argumento -Wait -NoNewWindow -ErrorAction Stop
|
||||
Write-Host "Ejecución como SISTEMA completada exitosamente."
|
||||
|
||||
# --- (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 {
|
||||
Write-Error "ERROR FATAL al ejecutar como SISTEMA. Detalles: $_"
|
||||
# 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
|
||||
}
|
||||
Reference in New Issue
Block a user