Como criar um serviço do Windows

Às vezes, você precisa de um aplicativo ou script para continuar em execução, esteja você conectado ao seu computador ou não. Talvez seja um script do PowerShell para monitorar portas(PowerShell script to monitor ports) ou um servidor web que hospeda uma página em sua rede doméstica(web server hosting a page on your home network) .

O ponto é que se você quiser que um processo, script ou programa seja executado enquanto o computador estiver ligado, você precisará criar um Windows Service .

O que preciso para criar um serviço do Windows?(What Do I Need to Create a Windows Service?)

Para criar um serviço do Windows no Windows 10(Windows 10) , existem alguns pré-requisitos: 

  • Acesso de administrador(Administrator) no computador
  • Algo para ser executado como um serviço ( PowerShell Script , programa, etc.)
  • Non-Sucking Service Manager ( NSSM ) instalado

O que é o Gerenciador de Serviço Não Sugador?(What Is the Non-Sucking Service Manager?)

Sim, você não pode soltar um nome como esse sem explicá-lo. Claro que o nome é infeliz, mas é preciso. O Non-Sucking Service Manager ( NSSM ) é sem dúvida a maneira mais fácil de criar um serviço do Windows(Windows) altamente confiável e configurável. Além disso, é um software livre e de código aberto(Open Source Software) (OSS).

O NSSM pode ser usado por meio do prompt(Windows Command Prompt) de comando do Windows ou de uma interface gráfica do usuário ( GUI ). Isso significa que qualquer pessoa pode usá-lo. O NSSM pode ser usado em qualquer versão do Windows voltando e incluindo o Windows 2000(Windows 2000) . Existem versões de 32 bits e 64 bits(32-bit and 64-bit) . Se você estiver usando um computador de 64 bits, tente essa versão primeiro. Se não funcionar, volte para a versão de 32 bits. 

Você pode baixar o NSSM do site(download NSSM from the website) , clonar o NSSM do Git(clone NSSM from Git) ou instalar o NSSM com Chocolatey(install NSSM with Chocolatey) . Chocolatey é um gerenciador de pacotes para Windows(Chocolatey is a package manager for Windows) . Os métodos de instalação(Installation) variam dependendo de qual rota você toma. Consulte (Please)as(NSSM) instruções do NSSM . Para nosso exemplo, estamos baixando do site do NSSM e instalando-o em C:\WINDOWS\system32 .

Criar um serviço do Windows com NSSM(Create a Windows Service With NSSM)

Para este exemplo, criaremos um serviço a partir de um script do PowerShell(PowerShell script) para registrar a porcentagem de carga média da CPU(CPU average load percentage)

  1. Copie e salve este script como log-CPULoadPercentage.ps1 em um local que provavelmente não será acessado por mais ninguém. Tente criar o diretório C:/Scripts e armazená-lo lá. Além disso, crie uma pasta em Scripts chamada Logs . Observe que o caminho para o script é C:/Scripts/log-CPULoadPercentage.ps1 . Você vai precisar disso mais tarde.

Nota(Note) : Todas as linhas abaixo seguidas do símbolo # são comentários e não afetarão o 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. Isso pode ser feito no prompt de comando do Windows(Windows Command Prompt) ou no PowerShell. Abra-o como Administrador(Open it as Administrator) .
  2. Digite o comando nssm install logCPUAvg e execute-o. A janela do instalador do serviço NSSM(NSSM service installer) será aberta.

  1. Clique(Click) no botão de reticências ao lado do campo Path :, navegue até o powershell.exe que normalmente está localizado em C:\Windows\System32\ . Selecione powershell.exe. Os campos Path: e Startup directory: serão preenchidos automaticamente.

  1. Insira o seguinte no campo Argumentos:: (Arguments:)-ExecutionPolicy Bypass -NoProfile -File “C:\PathToScript\get-Script.ps1” , em que a última parte é o caminho para o script do   PowerShell e o nome do script.(PowerShell)

  1. Selecione a guia Detalhes . (Details)Digite o que você gostaria que o serviço mostrasse como no gerenciador de serviços do (Services)Windows no campo Nome de exibição:. (Display name: )Em seguida, digite o que ele faz no campo Descrição:. (Description:)O tipo de inicialização:(Startup type: ) pode ser definido como Automático(Automatic) , Automático (Início Atrasado)(Automatic (Delayed Start)) , Manual ou Desativado(Disabled) . Para este exercício, Automático(Automatic) é bom.

  1. Selecione a guia Fazer logon . (Log on )Selecione Esta conta(This account) : botão de opção e insira a conta e a senha com a qual o serviço será executado. Você precisará escolher uma conta na qual o serviço será executado. Idealmente, você terá uma conta do Windows(Windows) criada apenas para executar este serviço. As permissões dessa conta devem ser limitadas apenas ao que o serviço precisa fazer. Você pode escolher a conta do sistema local(Local System account) , mas isso não é recomendado por motivos de segurança.

Existem várias outras guias que podem ser usadas para personalizar o serviço. Para este exercício, os valores padrão nessas guias são suficientes. Selecione o botão Instalar serviço(Install service ) .

  1. Quando o serviço estiver instalado, você verá o Service “logCPUAvg” installed successfully! janela. Selecione OK para fechá-lo. Isso conclui a instalação.

  1. Abra o Gerenciador de Serviços do Windows(Windows Services Manager ) e verifique se o serviço está lá.

  1. Execute(Run) o serviço para garantir que ele seja executado.

  1. Para verificar se esse serviço está em execução, use o Explorador de Arquivos(File Explorer ) para navegar até onde o log deve ser salvo para ver se ele existe.

nssm-check-log.png

Removendo um serviço do Windows com NSSM(Removing a Windows Service With NSSM)

Talvez você não precise mais monitorar a(monitor your CPU) carga da CPU, então gostaria de se livrar do serviço. Felizmente, o NSSM(NSSM) facilita isso. 

  1. No Windows Services Manager , interrompa o serviço. Faça isso selecionando o serviço Log CPU Average Load e, em seguida, selecionando o botão quadrado de parada na barra de ferramentas ou o link Parar o serviço(Stop the service) no lado esquerdo.

  1. Abra o prompt de comando do Windows(Windows Command Prompt ) ou o PowerShell como administrador.
  2. Digite o comando nssm remove logCPUAvg e execute o comando. 

  1. O NSSM(NSSM) solicitará que você confirme. Selecione Sim(Yes) .

  1. Quando o serviço for removido, você verá o Service “logCPUAvg” removed successfully! Confirmação. Selecione OK e pronto.

Isso é tudo. É uma boa ideia verificar o gerenciador de serviços para garantir que o serviço não esteja mais lá. Se você ainda vir o serviço, talvez seja necessário atualizar a tela e ele deve desaparecer.

Os serviços são uma ótima maneira de executar aplicativos ou scripts que precisam ser executados o tempo todo, reiniciar-se se falharem ou precisar de privilégios diferentes do usuário atual. Se você não precisar que seu aplicativo ou script faça todas essas coisas, considere usar uma tarefa agendada(using a Scheduled Task) .



About the author

Depois de quase 20 anos na indústria de tecnologia, aprendi muito sobre os produtos da Apple e como personalizá-los para minhas necessidades. Em particular, sei como usar a plataforma iOS para criar aparências personalizadas e interagir com meus usuários por meio de preferências do aplicativo. Essa experiência me deu informações valiosas sobre como a Apple projeta seus produtos e a melhor forma de melhorar a experiência do usuário.



Related posts