Windows szolgáltatás létrehozása

Néha szükség van egy alkalmazásra vagy szkriptre, hogy továbbra is fusson, függetlenül attól, hogy be van jelentkezve a számítógépébe, vagy sem. Lehet, hogy ez egy PowerShell-szkript a portok figyelésére,(PowerShell script to monitor ports) vagy egy webszerver, amely egy oldalt tárol otthoni hálózatán(web server hosting a page on your home network) .

A lényeg az, hogy ha azt szeretné, hogy egy folyamat, szkript vagy program fusson, amíg a számítógép be van kapcsolva, létre kell hoznia egy Windows szolgáltatást(Windows Service) .

Mire van szükségem egy Windows szolgáltatás létrehozásához?(What Do I Need to Create a Windows Service?)

A Windows szolgáltatás Windows 10 rendszerben történő létrehozásához néhány előfeltétel szükséges: 

  • Rendszergazdai(Administrator) hozzáférés a számítógépen
  • Valami szolgáltatásként futtatható ( PowerShell-szkript(PowerShell Script) , program stb.)
  • A Non-Sucking Service Manager ( NSSM ) telepítve

Mi az a nem szívás szolgáltatásmenedzser?(What Is the Non-Sucking Service Manager?)

Igen, nem ejthetsz ki egy ilyen nevet anélkül, hogy elmagyaráznád. Persze a név szerencsétlen, mégis pontos. A Non-Sucking Service Manager ( NSSM ) vitathatatlanul a legegyszerűbb módja egy rendkívül megbízható és konfigurálható Windows -szolgáltatás létrehozásának. Ráadásul ingyenes és nyílt forráskódú szoftver(Open Source Software) (OSS).

Az NSSM a Windows parancssoron(Windows Command Prompt) vagy grafikus felhasználói felületen ( GUI ) keresztül használható. Ez azt jelenti, hogy bárki használhatja. Az NSSM a Windows(Windows) bármely verzióján használható, amely visszamegy a Windows 2000 -hez, beleértve azt is . Létezik 32 bites és 64 bites(32-bit and 64-bit) verzió. Ha 64 bites számítógépet használ, először próbálja ki azt a verziót. Ha nem működik, térjen vissza a 32 bites verzióra. 

Letöltheti az NSSM-et a webhelyről(download NSSM from the website) , klónozhatja az NSSM-et a Gitből(clone NSSM from Git) , vagy telepítheti az NSSM-t a Chocolatey segítségével(install NSSM with Chocolatey) . A Chocolatey egy Windows csomagkezelője(Chocolatey is a package manager for Windows) . A telepítési(Installation) módok attól függően változnak, hogy melyik útvonalat választja. Kérjük(Please) , olvassa el az NSSM(NSSM) utasításait. Példánkban az NSSM webhelyéről töltjük le, és telepítjük a C:\WINDOWS\system32 -be .

Hozzon létre egy Windows szolgáltatást az NSSM segítségével(Create a Windows Service With NSSM)

Ebben a példában egy PowerShell-szkriptből hozunk létre egy szolgáltatást a (PowerShell script)CPU átlagos terhelési százalékának(CPU average load percentage) naplózásához . 

  1. Másolja ki és mentse ezt a szkriptet log-CPULoadPercentage.ps1 néven(log-CPULoadPercentage.ps1) egy olyan helyre, amelyhez valószínűleg senki más nem fér hozzá. Próbálja meg létrehozni a C:/Scripts könyvtárat , és ott tárolni. Ezenkívül hozzon létre egy mappát a Scriptsben (Scripts)Naplók(Logs) néven . Vegye figyelembe, hogy a szkript elérési útja a C:/Scripts/log-CPULoadPercentage.ps1 . Később szüksége lesz rá.

Megjegyzés(Note) : Az alábbi sorok mindegyike, amelyet a # szimbólum követ, megjegyzés, és nincs hatással a szkriptre.

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. Ezt megteheti a Windows parancssorában(Windows Command Prompt) vagy a PowerShellben. (PowerShell. )Nyissa meg rendszergazdaként(Open it as Administrator) .
  2. Írja be az nssm install logCPUAvg parancsot , és futtassa. Megnyílik az NSSM szolgáltatás telepítő(NSSM service installer) ablaka.

  1. Kattintson a (Click)Path: mező melletti ellipszis gombra , és keresse meg a powershell.exe fájlt(powershell.exe ) , amely általában a C:\Windows\System32\ helyen található . Válassza ki a powershell.exe fájlt. A Path: és Startup directory: mezők automatikusan kitöltésre kerülnek.

  1. Írja be a következőket az Argumentumok:(Arguments:) mezőbe: -ExecutionPolicy Bypass -NoProfile -File “C:\PathToScript\get-Script.ps1” , ahol az utolsó rész a PowerShell -szkript elérési útja és a szkript neve.  

  1. Válassza a Részletek(Details) lapot. A Megjelenítési név:(Display name: ) mezőbe írja be, hogy milyen formában szeretné megjeleníteni a szolgáltatást a Windows Szolgáltatások(Services) kezelőjében . Ezután írja be, hogy mit csinál a Leírás:(Description:) mezőben. Az Indítás típusa: (Startup type: )Automatikus(Automatic) , Automatikus (késleltetett indítás)(Automatic (Delayed Start)) , Kézi(Manual) vagy Letiltva(Disabled) állítható be . Ehhez a gyakorlathoz az Automatic jó.

  1. Válassza a Bejelentkezés(Log on ) lapot. Válassza a This account(This account) : rádiógombot, és adja meg azt a fiókot és jelszót, amellyel a szolgáltatás futni fog. Ki kell választania egy fiókot, amelyen a szolgáltatás futni fog. Ideális esetben egy Windows -fiókkal kell rendelkeznie, amely csak a szolgáltatás futtatásához szükséges. Ennek a fióknak az engedélyeit csak arra kell korlátozni, amire a szolgáltatásnak szüksége van. Kiválaszthatja a Helyi rendszer fiókot(Local System account) , de biztonsági okokból nem javasolt.

Számos más lap is használható a szolgáltatás testreszabásához. Ehhez a gyakorlathoz elegendőek a lapokon szereplő alapértelmezett értékek. Válassza a Szolgáltatás telepítése(Install service ) gombot.

  1. A szolgáltatás telepítése után látni fogja, hogy a Service “logCPUAvg” installed successfully! ablak. A bezáráshoz kattintson az OK gombra(OK) . Ezzel a telepítés véget ért.

  1. Nyissa meg a Windows Services Manager alkalmazást, és győződjön meg arról, hogy a szolgáltatás ott van.

  1. Futtassa(Run) a szolgáltatást, hogy biztosan futni fog.

  1. A szolgáltatás futásának ellenőrzéséhez használja a Fájlkezelőt(File Explorer ) , és navigáljon oda, ahová a naplót el kell menteni, és ellenőrizze, hogy létezik-e.

nssm-check-log.png

Windows-szolgáltatás eltávolítása NSSM segítségével(Removing a Windows Service With NSSM)

Talán már nem kell figyelnie a CPU(monitor your CPU) -terhelést, ezért szeretne megszabadulni a szolgáltatástól. Szerencsére az NSSM ezt megkönnyíti. 

  1. A Windows Services Manager alkalmazásban(Windows Services Manager) állítsa le a szolgáltatást. Ehhez válassza ki a CPU átlagos terhelése(Log CPU Average Load ) szolgáltatást, majd válassza ki a négyzet alakú stop gombot az eszköztáron, vagy válassza ki a szolgáltatás leállítása(Stop the service) hivatkozást a bal oldalon.

  1. Nyissa meg a Windows parancssort(Windows Command Prompt ) vagy a PowerShellt(PowerShell) rendszergazdaként.
  2. Írja be az nssm remove logCPUAvg parancsot, és hajtsa végre a parancsot. 

  1. Az NSSM(NSSM) megerősítést kér. Válassza az Igen(Yes) lehetőséget .

  1. A szolgáltatás eltávolítása után látni fogja a Service “logCPUAvg” removed successfully! Megerősítés. Válassza az OK gombot , és kész.

Ez minden. Célszerű ellenőrizni a szolgáltatáskezelőt, hogy megbizonyosodjon arról, hogy a szolgáltatás már nincs ott. Ha továbbra is látja a szolgáltatást, előfordulhat, hogy frissítenie kell a képernyőt, és el kell tűnnie.

A szolgáltatások nagyszerű lehetőséget kínálnak olyan alkalmazások vagy szkriptek futtatására, amelyeknek folyamatosan futniuk kell, önmagukat újra kell indítani, ha meghiúsulnak, vagy az aktuális felhasználótól eltérő jogosultságra van szükségük. Ha nincs szüksége az alkalmazásra vagy a szkriptre ezekhez a dolgokhoz, fontolja meg egy Ütemezett feladat(using a Scheduled Task) használatát.



About the author

Tapasztalt Windows 10 és 11/10 szakértő vagyok, böngészők és okostelefonos alkalmazások terén egyaránt jártas vagyok. Több mint 15 éve dolgozom szoftvermérnökként, és számos nagy nevű céggel dolgoztam együtt, beleértve a Microsoftot, a Google-t, az Apple-t, az Ubisoftot és még sok mást. A windows 10/11 fejlesztését egyetemi szinten is tanítottam.



Related posts