Ako vytvoriť službu Windows

Niekedy potrebujete aplikáciu alebo skript, aby ste mohli pracovať bez ohľadu na to, či ste prihlásení do počítača alebo nie. Možno je to skript PowerShell na monitorovanie portov(PowerShell script to monitor ports) alebo webový server hosťujúci stránku vo vašej domácej sieti(web server hosting a page on your home network) .

Ide o to, že ak chcete, aby proces, skript alebo program bežal, kým je počítač zapnutý, budete si musieť vytvoriť službu Windows(Windows Service) .

Čo potrebujem na vytvorenie služby Windows?(What Do I Need to Create a Windows Service?)

Na vytvorenie služby Windows v systéme Windows 10(Windows 10) existuje niekoľko predpokladov: 

  • Administrátorský(Administrator) prístup k počítaču
  • Niečo, čo sa má spustiť ako služba ( PowerShell Script , program atď.)
  • Nainštalovaný non-Sucking Service Manager ( NSSM ).

Čo je manažér nesacej služby?(What Is the Non-Sucking Service Manager?)

Áno, nemôžete vypustiť takéto meno bez toho, aby ste to vysvetlili. Názov je určite nešťastný, ale je presný. Non-Sucking Service Manager ( NSSM ) je pravdepodobne najjednoduchší spôsob, ako vytvoriť službu Windows , ktorá je vysoko spoľahlivá a konfigurovateľná. Navyše je to bezplatný softvér s otvoreným zdrojovým kódom(Open Source Software) (OSS).

NSSM je možné použiť prostredníctvom príkazového riadka systému Windows(Windows Command Prompt) alebo grafického používateľského rozhrania ( GUI ). To znamená, že ho môže použiť ktokoľvek. NSSM je možné použiť na ľubovoľnej verzii systému Windows , ktorá sa vracia k systému Windows 2000(Windows 2000) vrátane . Existujú 32-bitové a 64-bitové(32-bit and 64-bit) verzie. Ak používate 64-bitový počítač, vyskúšajte najprv túto verziu. Ak to nefunguje, vráťte sa k 32-bitovej verzii. 

NSSM si môžete stiahnuť z webovej stránky(download NSSM from the website) , naklonovať NSSM z Git(clone NSSM from Git) alebo nainštalovať NSSM pomocou Chocolatey(install NSSM with Chocolatey) . Chocolatey je správca balíkov pre Windows(Chocolatey is a package manager for Windows) . Spôsoby inštalácie(Installation) sa budú líšiť v závislosti od trasy, ktorou sa vyberiete. Prečítajte si(Please) pokyny NSSM . V našom príklade sťahujeme z webovej stránky NSSM a inštalujeme ho do C:\WINDOWS\system32 .

Vytvorte službu Windows pomocou NSSM(Create a Windows Service With NSSM)

V tomto príklade vytvoríme službu zo skriptu PowerShell(PowerShell script) na zaznamenávanie priemerného percenta zaťaženia procesora(CPU average load percentage)

  1. Skopírujte a uložte tento skript ako log-CPULoadPercentage.ps1 na miesto, ku ktorému pravdepodobne nikto iný nemá prístup. Skúste vytvoriť adresár C:/Scripts a uložiť ho tam. Vytvorte tiež priečinok v skriptoch(Scripts) s názvom Logs . Všimnite si, že cesta k skriptu je C:/Scripts/log-CPULoadPercentage.ps1 . Budete to potrebovať neskôr.

Poznámka(Note) : Všetky riadky nižšie, za ktorými nasleduje symbol #, sú komentáre a neovplyvnia skript.

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. Môžete to urobiť v príkazovom riadku systému Windows(Windows Command Prompt) alebo v prostredí PowerShell. Otvorte ho ako správca(Open it as Administrator) .
  2. Zadajte príkaz nssm install logCPUAvg a spustite ho. Otvorí sa okno inštalačného programu služby NSSM .(NSSM service installer)

  1. Kliknite(Click) na tlačidlo elipsy vedľa poľa Cesta:,(Path:) prejdite na súbor powershell.exe , ktorý sa bežne nachádza na C:\Windows\System32\ . Vyberte powershell.exe. Polia Cesta:(Path:) a Štartovací adresár:(Startup directory:) sa vyplnia automaticky.

  1. Do poľa Argumenty(Arguments:) zadajte nasledovné : -ExecutionPolicy Bypass -NoProfile -File “C:\PathToScript\get-Script.ps1” , kde posledná časť je cesta k vášmu PowerShell skriptu a názov skriptu.  

  1. Vyberte kartu Podrobnosti . (Details)Do poľa Zobrazovaný názov:(Display name: ) zadajte, ako sa má služba zobrazovať v správcovi služieb (Services)systému Windows(Windows) . Potom zadajte, čo robí, do poľa Popis :. (Description:)Typ spustenia:(Startup type: ) možno nastaviť ako Automaticky(Automatic) , Automaticky (oneskorené spustenie)(Automatic (Delayed Start)) , Manuálne(Manual) alebo Vypnuté(Disabled) . Pre toto cvičenie je automatika(Automatic) dobrá.

  1. Vyberte kartu Prihlásiť sa . (Log on )Vyberte prepínač Tento účet : a zadajte účet a heslo, pod ktorým bude služba spustená. (This account)Budete si musieť vybrať účet, pod ktorým bude služba bežať. V ideálnom prípade budete mať účet vo Windowse(Windows) vytvorený len na spustenie tejto služby. Povolenia tohto účtu by mali byť obmedzené iba na to, čo služba potrebuje. Môžete si vybrať lokálny systémový účet(Local System account) , ale z bezpečnostných dôvodov sa to neodporúča.

Existuje niekoľko ďalších kariet, ktoré možno použiť na prispôsobenie služby. Pre toto cvičenie postačujú predvolené hodnoty na týchto kartách. Vyberte tlačidlo Inštalovať službu(Install service ) .

  1. Keď je služba nainštalovaná, uvidíte, že Service “logCPUAvg” installed successfully! okno. Výberom OK ho zatvorte. Tým je inštalácia ukončená.

  1. Otvorte správcu služieb systému Windows(Windows Services Manager ) a uistite sa, že je tam služba.

  1. Spustite(Run) službu, aby ste sa uistili, že bude fungovať.

  1. Ak chcete overiť, či je táto služba spustená, pomocou Prieskumníka(File Explorer ) prejdite na miesto, kde sa má protokol uložiť, aby ste zistili, či existuje.

nssm-check-log.png

Odstránenie služby Windows pomocou NSSM(Removing a Windows Service With NSSM)

Možno už nepotrebujete sledovať(monitor your CPU) zaťaženie procesora, a preto by ste sa chceli služby zbaviť. Našťastie to NSSM uľahčuje. 

  1. V Správcovi služieb systému Windows(Windows Services Manager) zastavte službu. Urobte to tak, že vyberiete službu Log CPU Average Load a potom vyberiete štvorcové tlačidlo zastavenia na paneli nástrojov alebo prepojenie Zastaviť službu(Stop the service) na ľavej strane.

  1. Otvorte buď príkazový riadok systému Windows(Windows Command Prompt ) alebo PowerShell ako správca.
  2. Zadajte príkaz nssm remove logCPUAvg a vykonajte príkaz. 

  1. NSSM vás požiada o potvrdenie. Vyberte možnosť Áno(Yes) .

  1. Keď je služba odstránená, uvidíte, že Service “logCPUAvg” removed successfully! Potvrdenie. Vyberte OK a máte hotovo.

To je všetko. Je dobré skontrolovať správcu služieb, aby ste sa uistili, že služba už neexistuje. Ak sa služba stále zobrazuje, možno budete musieť obnoviť obrazovku a mala by byť preč.

Služby sú skvelým spôsobom, ako spúšťať aplikácie alebo skripty, ktoré sa musia neustále spúšťať, reštartovať sa, ak zlyhajú, alebo potrebujú privilégiá odlišné od aktuálneho používateľa. Ak na vykonávanie všetkých týchto vecí nepotrebujete svoju aplikáciu alebo skript, zvážte namiesto toho použitie naplánovanej úlohy(using a Scheduled Task) .



About the author

Mám vzdelanie v oblasti počítačového inžinierstva a informačných technológií, čo mi dalo jedinečný pohľad na platformy Windows 10 a 11. Najmä mám skúsenosti s Windows 10 " Desktop Experience " a prehliadačom Microsoft Edge. Moje skúsenosti s týmito dvoma platformami mi umožňujú hlboko pochopiť, ako fungujú, a moje odborné znalosti v týchto oblastiach mi umožňujú poskytovať spoľahlivé rady, ako ich zlepšiť.



Related posts