¿Como hacemos para que la API o el Servicio se inicien automáticamente?

Creado por David Miralpeix, Modificado el Lun, 17 Mar a 10:51 A. M. por Óscar Ortiz

La API y el servicio están programados para se inicien como servicio de Windows de forma automática.

Es posible que en equipos con mucha carga en el arranque puede ocasionar que se demore más de lo normal el inicio del servicio, o incluso que la dependencia entre servicios llegue a ocasionar que no se inicie por no encontrar un servicio anterior iniciado.


La solución rápida ante estos casos es establecer el tipo de inicio del servicio como Automática (inicio retrasado) desde las propiedades del mismo en el administrador de servicios de windows.



Si, tras realizar este cambio, el servicio sigue sin arrancar, se puede programar una tarea de Windows para que revise el servicio y lo arranque en caso de parada inesperada ejecutando un fichero de PowerShell. Los pasos a seguir, dependientes de la versión de Windows que se disponga, serían los siguientes:


  • Abrir el Programador de Tareas
    Presiona Win + R, escribe taskschd.msc y presiona Enter.
  • Crear una nueva tarea
    • En el panel derecho, haz clic en Crear tarea....
    • En la pestaña General, dale un nombre como "Monitorizar Servicio".
    • Marca Ejecutar con los privilegios más altos.
    • En Configurar para, elige Windows 10 (o tu versión).
  • Configurar el desencadenador
    • Ve a la pestaña DesencadenadoresNuevo....
    • Elige Repetir cada 5 minutos (o el intervalo que desees).
    • Marca Indefinidamente.
  • Agregar la acción
    • Ve a la pestaña AccionesNueva....
    • En Programa o script, escribe:
      powershell.exe
    • En Agregar argumentos, escribe:
      -ExecutionPolicy Bypass -File "C:\ruta\al\script\IniciarServicio.ps1"
  • Guardar la tarea
    • Acepta todos los cambios y guarda la tarea.


El fichero de PowerShell sería algo similar al siguiente, cambiando el nombre del servicio por el correcto.


$Servicio = "AHORA API 500_H75"

# Obtiene el estado del servicio
$Estado = Get-Service -Name $Servicio -ErrorAction SilentlyContinue

if ($Estado -and $Estado.Status -ne "Running") {
    Write-Output "El servicio $Servicio está detenido. Intentando iniciarlo..."
    Start-Service -Name $Servicio
    Start-Sleep -Seconds 5 # Espera 5 segundos para verificar
    $Estado = Get-Service -Name $Servicio
    if ($Estado.Status -eq "Running") {
        Write-Output "El servicio $Servicio se inició correctamente."
    } else {
        Write-Output "No se pudo iniciar el servicio $Servicio."
    }
} else {
    Write-Output "El servicio $Servicio ya está en ejecución."
}
Generic




¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo