Kuinka luoda Windows-palvelu

Joskus tarvitset sovelluksen tai komentosarjan toimiaksesi riippumatta siitä, oletko kirjautunut tietokoneellesi vai et. Ehkä se on PowerShell-skripti porttien valvontaan(PowerShell script to monitor ports) tai verkkopalvelin, joka isännöi sivua kotiverkossasi(web server hosting a page on your home network) .

Asia on siinä, että jos haluat prosessin, komentosarjan tai ohjelman olevan käynnissä niin kauan kuin tietokone on päällä, sinun on luotava Windows-palvelu(Windows Service) .

Mitä tarvitsen Windows-palvelun luomiseen?(What Do I Need to Create a Windows Service?)

Windows -palvelun luominen Windows 10(Windows 10) :ssä edellyttää muutamia edellytyksiä: 

  • Järjestelmänvalvojan(Administrator) käyttöoikeudet tietokoneeseen
  • Palveluna suoritettava asia ( PowerShell-skripti(PowerShell Script) , ohjelma jne.)
  • Non-Sucking Service Manager ( NSSM ) asennettu

Mikä on ei-imevä palvelupäällikkö?(What Is the Non-Sucking Service Manager?)

Kyllä, et voi pudottaa sellaista nimeä selittämättä sitä. Toki nimi on valitettava, mutta se on kuitenkin tarkka. Non-Sucking Service Manager ( NSSM ) on luultavasti helpoin tapa luoda Windows -palvelu, joka on sekä erittäin luotettava että konfiguroitavissa. Lisäksi se on ilmainen ja avoimen lähdekoodin ohjelmisto(Open Source Software) (OSS).

NSSM:ää voidaan käyttää Windowsin komentokehotteen(Windows Command Prompt) tai graafisen käyttöliittymän ( GUI ) kautta. Tämä tarkoittaa, että kuka tahansa voi käyttää sitä. NSSM:ää voidaan käyttää missä tahansa Windows-versiossa, joka(Windows) palaa Windows 2000 :een, mukaan lukien . On 32- ja 64-bittisiä(32-bit and 64-bit) versioita. Jos käytät 64-bittistä tietokonetta, kokeile sitä versiota ensin. Jos se ei toimi, palaa 32-bittiseen versioon. 

Voit ladata NSSM:n verkkosivustolta(download NSSM from the website) , kloonata NSSM:(clone NSSM from Git) n Gitistä tai asentaa NSSM:n Chocolateyn kanssa(install NSSM with Chocolatey) . Chocolatey on paketinhallinta Windowsille(Chocolatey is a package manager for Windows) . Asennusmenetelmät(Installation) vaihtelevat valitsemasi reitin mukaan. Tutustu(Please) NSSM :(NSSM) n ohjeisiin. Esimerkiksi lataamme NSSM-(NSSM) verkkosivustolta ja asennamme sen C:\WINDOWS\system32 .

Luo Windows-palvelu NSSM:n avulla(Create a Windows Service With NSSM)

Tässä esimerkissä luomme palvelun PowerShell-komentosarjasta (PowerShell script)prosessorin keskimääräisen kuormitusprosentin(CPU average load percentage) kirjaamiseksi lokiin . 

  1. Kopioi ja tallenna tämä komentosarja nimellä log-CPULoadPercentage.ps1 paikkaan, johon kukaan muu ei todennäköisesti pääse käsiksi. Yritä luoda hakemisto C:/Scripts ja tallentaa se sinne. Luo myös Skripteihin(Scripts) kansio nimeltä Lokit(Logs) . Huomaa, että komentosarjan polku on C:/Scripts/log-CPULoadPercentage.ps1 . Tarvitset sitä myöhemmin.

Huomautus(Note) : Kaikki alla olevat rivit, joita seuraa #-symboli, ovat kommentteja eivätkä vaikuta skriptiin.

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. Tämä voidaan tehdä joko Windowsin komentokehotteessa(Windows Command Prompt) tai PowerShellissä. (PowerShell. )Avaa se järjestelmänvalvojana(Open it as Administrator) .
  2. Anna komento nssm install logCPUAvg ja suorita se. NSSM -palvelun asennusikkuna(NSSM service installer) avautuu.

  1. Napsauta (Click)Polku:(Path:) -kentän vieressä olevaa ellipsipainiketta ja siirry powershell.exe -tiedostoon, joka yleensä sijaitsee osoitteessa C:\Windows\System32\ . Valitse powershell.exe. Polku :-(Path:) ja Käynnistyshakemisto:(Startup directory:) -kentät täytetään automaattisesti.

  1. Kirjoita Argumentit:(Arguments:) -kenttään seuraava: -ExecutionPolicy Bypass -NoProfile -File “C:\PathToScript\get-Script.ps1” , jossa viimeinen osa on polku PowerShell -skriptiin ja komentosarjan nimi.  

  1. Valitse Tiedot(Details) - välilehti. Kirjoita Näyttönimi:(Display name: ) -kenttään , mitä haluat palvelun näkyvän Windows - palvelujen(Services) hallinnassa . Kirjoita sitten Kuvaus:(Description:) -kenttään, mitä se tekee. Käynnistystyypiksi voidaan asettaa Automaattinen(Startup type: ) , Automaattinen (Automatic)(Ajastettu käynnistys)(Automatic (Delayed Start)) , Manuaalinen(Manual) tai Ei käytössä(Disabled) . Tässä harjoituksessa Automaattinen(Automatic) on hyvä.

  1. Valitse Kirjaudu sisään(Log on ) -välilehti. Valitse Tämä tili(This account) : -valintanappi ja anna tili ja salasana, jolla palvelu toimii. Sinun on valittava tili, jolla palvelua käytetään. Ihannetapauksessa sinulla on Windows -tili, joka on luotu vain tämän palvelun suorittamista varten. Tämän tilin käyttöoikeudet tulisi rajoittaa vain siihen, mitä palvelu tarvitsee. Voit valita paikallisen järjestelmän tilin(Local System account) , mutta sitä ei suositella turvallisuussyistä.

On olemassa useita muita välilehtiä, joita voidaan käyttää palvelun mukauttamiseen. Tätä harjoitusta varten näiden välilehtien oletusarvot ovat riittävät. Valitse Asenna palvelu(Install service ) -painike.

  1. Kun palvelu on asennettu, näet Service “logCPUAvg” installed successfully! ikkuna. Sulje se valitsemalla OK . Tähän päättyy asennus.

  1. Avaa Windows Services Manager ja varmista, että palvelu on siellä.

  1. Suorita(Run) palvelu varmistaaksesi, että se toimii.

  1. Varmista, että tämä palvelu on käynnissä, siirtymällä File Explorerin(File Explorer ) avulla lokin tallennuspaikkaan ja tarkistamalla, onko se olemassa.

nssm-check-log.png

Windows-palvelun poistaminen NSSM:llä(Removing a Windows Service With NSSM)

Ehkä sinun ei enää tarvitse valvoa suorittimen(monitor your CPU) kuormitusta, joten haluat päästä eroon palvelusta. Onneksi NSSM tekee sen helpoksi. 

  1. Pysäytä palvelu Windows Services Managerissa(Windows Services Manager) . Tee tämä valitsemalla Loki CPU:n keskimääräinen kuormitus(Log CPU Average Load ) -palvelu ja sitten joko neliömäinen pysäytyspainike työkalupalkista tai Pysäytä palvelu(Stop the service) -linkki vasemmalla puolella.

  1. Avaa joko Windowsin komentokehote(Windows Command Prompt ) tai PowerShell järjestelmänvalvojana.
  2. Anna komento nssm remove logCPUAvg ja suorita komento. 

  1. NSSM pyytää sinua vahvistamaan. Valitse Kyllä(Yes) .

  1. Kun palvelu poistetaan, näet Service “logCPUAvg” removed successfully! Vahvistus. Valitse OK ja olet valmis.

Siinä kaikki. On hyvä idea tarkistaa palvelupäälliköltä varmistaaksesi, että palvelu ei ole enää siellä. Jos näet edelleen palvelun, sinun on ehkä päivitettävä näyttö ja sen pitäisi olla poissa.

Palvelut ovat loistava tapa suorittaa sovelluksia tai komentosarjoja, joiden on oltava käynnissä koko ajan, käynnistettävä itsensä uudelleen, jos ne epäonnistuvat tai tarvitsevat eri oikeuksia kuin nykyinen käyttäjä. Jos et tarvitse sovellustasi tai komentosarjaasi tehdäksesi kaikkia näitä asioita, harkitse ajoitetun tehtävän(using a Scheduled Task) käyttöä sen sijaan.



About the author

Olen kokenut Windows 10- ja Windows 11/10 -järjestelmänvalvoja, jolla on kokemusta Edgestä. Minulla on runsaasti tietoa ja kokemusta tarjottavana tällä alalla, minkä vuoksi uskon, että osaamisestani on hyötyä yrityksellesi. Vuosien kokemukseni sekä Windows 10:stä että Edgestä antaa minulle mahdollisuuden oppia nopeasti uusia tekniikoita, ratkaista ongelmia nopeasti ja ottaa vastuuta yrityksesi johtamisesta. Lisäksi kokemukseni Windows 10:stä ja Edgestä tekevät minut erittäin perehtyneeksi käyttöjärjestelmän kaikista näkökohdista, mikä olisi hyödyllistä palvelimien hallinnassa tai ohjelmistosovellusten hallinnassa.



Related posts