Cómo crear un servicio de Windows


A veces, necesita una aplicación o un script para seguir ejecutándose, ya sea que haya iniciado sesión en su computadora o no. Tal vez sea un Script de PowerShell para monitorear puertos o un servidor web que aloja una página en su red doméstica.

El punto es que si desea que un proceso, script o programa se ejecute mientras la computadora esté encendida, deberá crear un Servicio de Windows.

¿Qué necesito para crear un servicio de Windows?

Para crear un servicio de Windows en Windows 10, existen algunos requisitos previos:

  • Acceso de administrador en la computadora
  • Algo para ejecutar como un servicio (PowerShell Script, programa, etc.)
  • Non-Sucking Service Manager (NSSM) instalado
  • ¿Qué es el administrador de servicios no chupador?

    Sí, no puede soltar un nombre así sin explicarlo. Seguro que el nombre es desafortunado, pero es exacto. El Non-Sucking Service Manager (NSSM) es posiblemente la forma más fácil de crear un servicio de Windows que sea altamente confiable y configurable. Además, es gratis y Software de código abierto (OSS).

    NSSM se puede utilizar a través de Símbolo del sistema de Windows, o una interfaz gráfica de usuario (GUI ). Esto significa que cualquiera puede usarlo. NSSM se puede utilizar en cualquier versión de Windows que se remonta a Windows 2000, incluido. Hay 32 bits y 64 bits versiones. Si está utilizando una computadora de 64 bits, pruebe esa versión primero. Si no funciona, recurra a la versión de 32 bits.

    Puede descargar NSSM del sitio web, clonar NSSM de Git o instalar NSSM con Chocolatey. Chocolatey es un administrador de paquetes para Windows. Los métodos de instalación variarán según la ruta que tome. Consulte las instrucciones de NSSM. Para nuestro ejemplo, lo estamos descargando del sitio web de NSSM y lo instalamos en C: \ WINDOWS \ system32.

    In_content_1 all: [300x250] / dfp: [640 x 360]->

    Crear un servicio de Windows con NSSM

    Para este ejemplo, crearemos un servicio a partir de un Script de PowerShell para iniciar sesión Porcentaje de carga promedio de la CPU.

    1. Copie y guarde esta secuencia de comandos como log-CPULoadPercentage.ps1en un lugar al que probablemente nadie más acceda. Intente crear el directorio C: / Scriptsy almacenarlo allí. Además, cree una carpeta en Scripts llamada Registros. Tenga en cuenta que la ruta de la secuencia de comandos es C: /Scripts/log-CPULoadPercentage.ps1. Lo necesitará más tarde.
    2. Nota: Todas las líneas siguientes seguidas por el símbolo # son comentarios y no afectarán al script.

      CLS #Optional. I like to use this to clear the terminal when testing.
      #Make sure you have a folder called Logs in the same directory as this script #The log is where the records will be stored. Start-Transcript -Path "$PSScriptRoot\Logs\log-CPULoadPercentage-$(get-date -f yyyy-MM-dd).txt" -Append #While loop keeps it running until manually stopped While ($True){ #Creates a timestamp to know when the measurement was taken $timeStamp = get-date -f yyyy-MM-h:mm:ss #Gets the average load percentage at that time, then waits 5 seconds to do it again. $cpuLoadPercent = Get-CimInstance win32_processor | Measure-Object -Property LoadPercentage -Average | Select-Object Average;Start-Sleep -Seconds 5 #Isolates just the average so there isn't a weird @{Average=13} string $cpuLoadPercent = $cpuLoadPercent.Average #writes results to screen, or in this case to the log Write-Host "$timeStamp CPU Load Percentage $cpuLoadPercent" } Stop-Transcript
      1. Esto se puede hacer en el Símbolo del sistema de Windowso en PowerShell.Ábrelo como administrador.
      2. Ingrese el comando nssm install logCPUAvgy ejecútelo. Se abrirá la ventana del instalador del servicio NSSM.
        1. Haga clic en el botón de puntos suspensivos junto al campo Ruta:, navegue hasta powershell.exeque normalmente se encuentra en C: \ Windows \ System32 \. Seleccione powershell.exe. Los campos Ruta:y Directorio de inicio:se completarán automáticamente.
          1. Ingresa lo siguiente en el campo Argumentos:: -ExecutionPolicy Bypass -NoProfile -File “C: \ PathToScript \ get-Script.ps1”, donde la última parte es la ruta a su secuencia de comandos de PowerShell y al nombre de la secuencia de comandos.
            1. Selecciona la pestaña Detalles. Ingrese lo que desea que muestre el servicio en el administrador de servicios de Windows en el campo Nombre para mostrar:. Luego, ingrese lo que hace en el campo Descripción:. El tipo de inicio:se puede configurar como automático, automático (inicio retrasado), manualo Deshabilitado. Para este ejercicio, Automático es bueno.
              1. Selecciona la pestaña Iniciar sesión. Seleccione el botón de opción Esta cuenta: e ingrese la cuenta y la contraseña con las que se ejecutará el servicio. Deberá elegir una cuenta con la que se ejecutará el servicio. Idealmente, tendrá una cuenta de Windows creada solo para ejecutar este servicio. Los permisos de esta cuenta deben limitarse solo a lo que debe hacer el servicio. Puede elegir la cuenta del sistema local, pero no se recomienda por razones de seguridad.
              2. Hay varias otras pestañas que se pueden usar para personalizar el Servicio. Para este ejercicio, los valores predeterminados en esas pestañas son suficientes. Seleccione el botón Instalar servicio.

                1. Cuando se instale el servicio, verá el Servicio “logCPUAvg” instalado correctamente.ventana. Selecciona Aceptarpara cerrarlo. Con esto concluye la instalación.
                  1. Abra el Administrador de servicios de Windowsy asegúrese de que el servicio esté allí.
                    1. Ejecute el servicio para asegurarse de que se ejecute.
                      1. Para verificar que este servicio se está ejecutando, use el Explorador de archivospara navegar hasta donde se supone que se debe guardar el registro para ver si existe.
                      2. Eliminar un servicio de Windows Con NSSM

                        Tal vez no necesite monitorea tu CPU cargar más, por lo que le gustaría deshacerse del servicio. Afortunadamente, NSSM lo hace fácil.

                        1. En el Administrador de servicios de Windows, detenga el servicio. Para ello, seleccione el servicio Registrar carga media de CPUy, a continuación, seleccione el botón cuadrado de parada en la barra de herramientas o el enlace Detener el servicioen el lado izquierdo.
                          1. Abra el Símbolo del sistema de Windowso PowerShellcomo administrador.
                          2. Ingrese el comando nssm remove logCPUAvgy ejecute el comando.
                            1. NSSM le pedirá que confirme. Seleccione Sí0000-.
                              1. Cuando se elimine el servicio, verá el Servicio “logCPUAvg "Eliminado con éxito!Confirmación. Seleccione Aceptary listo.
                              2. Eso es todo. Es una buena idea consultar al administrador de servicios para asegurarse de que el servicio ya no esté disponible. Si aún ve el servicio, es posible que deba actualizar la pantalla y debería desaparecer.

                                Los servicios son una excelente manera de ejecutar aplicaciones o scripts que deben ejecutarse todo el tiempo; reiníciese si fallan. o necesita privilegios distintos a los del usuario actual. Si no necesita su aplicación o secuencia de comandos para hacer todas esas cosas, considere usando una tarea programada en su lugar.

                                Artículos Relacionados:


                                12.11.2020