Sådan opretter du en Windows-tjeneste

Nogle gange har du brug for en app eller et script for at blive ved med at køre, uanset om du er logget på din computer eller ej. Måske er det et PowerShell-script til at overvåge porte(PowerShell script to monitor ports) eller en webserver, der hoster en side på dit hjemmenetværk(web server hosting a page on your home network) .

Pointen er, at hvis du vil have en proces, et script eller et program til at køre, så længe computeren er tændt, skal du oprette en Windows-tjeneste(Windows Service) .

Hvad skal jeg bruge for at oprette en Windows-tjeneste?(What Do I Need to Create a Windows Service?)

For at oprette en Windows -tjeneste i Windows 10 er der et par forudsætninger: 

  • Administratoradgang(Administrator) på computeren
  • Noget at køre som en tjeneste ( PowerShell Script , program osv.)
  • Non-Sucking Service Manager ( NSSM ) installeret

Hvad er den ikke-sugende serviceleder?(What Is the Non-Sucking Service Manager?)

Ja, sådan et navn kan man ikke droppe uden at forklare det. Selvfølgelig er navnet uheldigt, men det er præcist. Non-Sucking Service Manager ( NSSM ) er uden tvivl den nemmeste måde at skabe en Windows -tjeneste, der er både yderst pålidelig og konfigurerbar. Derudover er det gratis og Open Source Software (OSS).

NSSM kan bruges via Windows Command Prompt eller en grafisk brugergrænseflade ( GUI ). Det betyder, at alle kan bruge det. NSSM kan bruges på enhver version af Windows , der går tilbage til og inklusive Windows 2000 . Der er 32-bit og 64-bit(32-bit and 64-bit) versioner. Hvis du bruger en 64-bit computer, skal du prøve den version først. Hvis det ikke virker, så fald tilbage til 32-bit versionen. 

Du kan downloade NSSM fra hjemmesiden(download NSSM from the website) , klone NSSM fra Git(clone NSSM from Git) eller installere NSSM med Chocolatey(install NSSM with Chocolatey) . Chocolatey er en pakkehåndtering til Windows(Chocolatey is a package manager for Windows) . Installationsmetoder(Installation) vil variere afhængigt af, hvilken rute du tager. Se(Please) venligst NSSMs(NSSM) instruktioner. For vores eksempel downloader vi fra NSSM - webstedet og installerer det i C:\WINDOWS\system32 .

Opret en Windows-tjeneste med NSSM(Create a Windows Service With NSSM)

I dette eksempel opretter vi en tjeneste ud fra et PowerShell-script for at logge CPU-gennemsnitlig belastningsprocent(CPU average load percentage)

  1. Kopier og gem dette script som log-CPULoadPercentage.ps1 til et sted, der sandsynligvis ikke vil blive tilgået af andre. Prøv at oprette mappen C:/Scripts og gem den der. Opret også en mappe i Scripts kaldet Logs . Bemærk, at stien til scriptet er C:/Scripts/log-CPULoadPercentage.ps1 . Det får du brug for senere.

Bemærk(Note) : Alle linjer nedenfor efterfulgt af #-symbolet er kommentarer og vil ikke påvirke scriptet.

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. Dette kan gøres i enten Windows Kommandoprompt(Windows Command Prompt) eller PowerShell. Åbn det som administrator(Open it as Administrator) .
  2. Indtast kommandoen nssm install logCPUAvg og kør den. NSSM -tjenesteinstallationsvinduet(NSSM service installer) åbnes.

  1. Klik(Click) på ellipseknappen ved siden af ​​feltet Sti(Path:) :, naviger til powershell.exe , der normalt er placeret på C:\Windows\System32\ . Vælg powershell.exe. Felterne Sti:(Path:) og Startup directory: udfyldes automatisk.

  1. Indtast følgende i Arguments: -feltet: -ExecutionPolicy Bypass -NoProfile -File “C:\PathToScript\get-Script.ps1” , hvor den sidste del er stien til dit PowerShell -script og scriptnavnet.  

  1. Vælg fanen Detaljer(Details) . Indtast, hvad du vil have, at tjenesten skal vises som i Windows Services- manageren i feltet Visningsnavn(Display name: ) :. Indtast derefter, hvad det gør i feltet Beskrivelse(Description:) :. Opstartstypen:(Startup type: ) kan indstilles som Automatisk(Automatic) , Automatisk (forsinket start)(Automatic (Delayed Start)) , Manuel(Manual) eller Deaktiveret(Disabled) . Til denne øvelse er Automatic god.

  1. Vælg fanen Log på(Log on ) . Vælg denne konto(This account) : alternativknap, og indtast den konto og adgangskode, som tjenesten vil køre som. Du skal vælge en konto, som tjenesten skal køre under. Ideelt set vil du have en Windows -konto oprettet kun til at køre denne tjeneste. Denne kontos tilladelser bør kun begrænses til, hvad tjenesten skal gøre. Du kan vælge den lokale systemkonto(Local System account) , men det anbefales ikke af sikkerhedsmæssige årsager.

Der er flere andre faner, der kan bruges til at tilpasse tjenesten. Til denne øvelse er standardværdierne i disse faner tilstrækkelige. Vælg knappen Installer tjeneste(Install service ) .

  1. Når tjenesten er installeret, vil du se Service “logCPUAvg” installed successfully! vindue. Vælg OK for at lukke den. Det afslutter installationen.

  1. Åbn Windows Services Manager og sørg for, at tjenesten er der.

  1. Kør(Run) tjenesten for at sikre, at den kører.

  1. For at bekræfte, at denne tjeneste kører, skal du bruge File Explorer til at navigere til det sted, hvor loggen skal gemmes for at se, om den findes.

nssm-check-log.png

Fjernelse af en Windows-tjeneste med NSSM(Removing a Windows Service With NSSM)

Måske behøver du ikke overvåge din CPU-(monitor your CPU) belastning længere, så du vil gerne af med tjenesten. Heldigvis gør NSSM det nemt. 

  1. Stop tjenesten i Windows Services Manager . Gør dette ved at vælge tjenesten Log CPU-gennemsnitlig belastning(Log CPU Average Load ) og derefter enten vælge den firkantede stopknap på værktøjslinjen eller linket Stop tjenesten(Stop the service) i venstre side.

  1. Åbn enten Windows kommandoprompt(Windows Command Prompt ) eller PowerShell som administrator.
  2. Indtast kommandoen nssm remove logCPUAvg og udfør kommandoen. 

  1. NSSM vil bede dig om at bekræfte. Vælg Ja(Yes) .

  1. Når tjenesten er fjernet, vil du se Service “logCPUAvg” removed successfully! Bekræftelse. Vælg OK , og du er færdig.

Det er alt. Det er en god idé at tjekke serviceadministratoren for at sikre, at servicen ikke længere er der. Hvis du stadig ser tjenesten, skal du muligvis opdatere skærmen, og den burde være væk.

Tjenester er en fantastisk måde at køre apps eller scripts, der skal køre hele tiden, genstarte sig selv, hvis de fejler, eller har brug for privilegier, der er forskellige fra den aktuelle bruger. Hvis du ikke har brug for din app eller dit script til at gøre alle disse ting, kan du overveje at bruge en planlagt opgave(using a Scheduled Task) i stedet for.



About the author

Jeg er en computertekniker med over 10 års erfaring, heraf 3 år som 店員. Jeg har erfaring med både Apple og Android enheder, og er særligt dygtig til at reparere og opgradere computere. Jeg nyder også at se film på min computer og bruge min iPhone til at tage billeder og videoer.



Related posts