Как да създадете услуга на Windows

Понякога имате нужда от приложение или скрипт, за да продължите да работите, независимо дали сте влезли в компютъра си или не. Може би това е скрипт на PowerShell за наблюдение на портове(PowerShell script to monitor ports) или уеб сървър, хостващ страница във вашата домашна мрежа(web server hosting a page on your home network) .

Въпросът е, че ако искате процес, скрипт или програма да работи, докато компютърът е включен, ще трябва да създадете услуга на Windows(Windows Service) .

Какво ми е необходимо, за да създам услуга на Windows?(What Do I Need to Create a Windows Service?)

За да създадете услуга на Windows в Windows 10 , има няколко предпоставки: 

  • Администраторски(Administrator) достъп на компютъра
  • Нещо, което да се изпълнява като услуга ( PowerShell Script , програма и т.н.)
  • Инсталиран е Non-Sucking Service Manager ( NSSM ).

Какво представлява Мениджърът на несукащи услуги?(What Is the Non-Sucking Service Manager?)

Да, не можете да изпуснете такова име, без да го обясните. Разбира се, името е жалко, но е точно. Non- sucking Service Manager ( NSSM ) е може би най-лесният начин да създадете услуга на Windows , която е едновременно високонадеждна и конфигурируема. Освен това е безплатен софтуер с отворен код(Open Source Software) (OSS).

NSSM може да се използва чрез командния ред на Windows(Windows Command Prompt) или чрез графичен потребителски интерфейс ( GUI ). Това означава, че всеки може да го използва. NSSM може да се използва във всяка версия на Windows , връщаща се към, включително, Windows 2000 . Има 32-битови и 64-битови(32-bit and 64-bit) версии. Ако използвате 64-битов компютър, опитайте първо тази версия. Ако не работи, върнете се към 32-битовата версия. 

Можете да изтеглите NSSM от уебсайта(download NSSM from the website) , да клонирате NSSM от Git(clone NSSM from Git) или да инсталирате NSSM с Chocolatey(install NSSM with Chocolatey) . Chocolatey е пакетен мениджър за Windows(Chocolatey is a package manager for Windows) . Методите за инсталиране(Installation) ще варират в зависимост от маршрута, който поемате. Моля(Please) , вижте инструкциите на NSSM . За нашия пример изтегляме от уебсайта на NSSM и го инсталираме в C:\WINDOWS\system32 .

Създайте услуга на Windows с NSSM(Create a Windows Service With NSSM)

За този пример ще създадем услуга от скрипт на PowerShell(PowerShell script) за регистриране на средния процент на натоварване на процесора(CPU average load percentage)

  1. Копирайте и запазете този скрипт като log-CPULoadPercentage.ps1 на място, което е малко вероятно да бъде достъпно от някой друг. Опитайте да създадете директорията C:/Scripts и да я съхраните там. Също така създайте папка в Scripts , наречена Logs . Имайте предвид, че пътят към скрипта е C:/Scripts/log-CPULoadPercentage.ps1 . Това ще ти трябва по-късно.

Забележка(Note) : Всички редове по-долу, последвани от символа #, са коментари и няма да повлияят на скрипта.

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. Това може да стане или в командния ред на Windows,(Windows Command Prompt) или в PowerShell. Отворете го като администратор(Open it as Administrator) .
  2. Въведете командата nssm install logCPUAvg и я стартирайте. Ще се отвори прозорецът на инсталатора на услугата NSSM(NSSM service installer) .

  1. Щракнете(Click) върху бутона с елипси до полето Path :, отидете до powershell.exe , който обикновено се намира в C:\Windows\System32\ . Изберете powershell.exe. Полетата Path: и Startup directory: ще бъдат автоматично попълнени.

  1. Въведете следното в полето Arguments:: -ExecutionPolicy -ExecutionPolicy Bypass -NoProfile -File “C:\PathToScript\get-Script.ps1” , където последната част е пътят към вашия PowerShell скрипт и името на скрипта.  

  1. Изберете раздела Подробности(Details) . Въведете това, което искате услугата да се показва в диспечера на услугите на (Services)Windows в полето (Windows) Display name :. След това въведете какво прави в полето Описание(Description:) :. Типът на стартиране:(Startup type: ) може да бъде зададен като Автоматично(Automatic) , Автоматично (отложен старт)(Automatic (Delayed Start)) , Ръчно(Manual) или Деактивирано(Disabled) . За това упражнение Автоматично(Automatic) е добро.

  1. Изберете раздела Вход(Log on ) . Изберете бутона за избор Този акаунт : и въведете акаунта и паролата, с които ще работи услугата. (This account)Ще трябва да изберете акаунт, под който да работи услугата. В идеалния случай ще имате акаунт в Windows , създаден само за стартиране на тази услуга. Разрешенията на този акаунт трябва да бъдат ограничени само до това, което услугата трябва да направи. Можете да изберете акаунта на локалната система(Local System account) , но не се препоръчва от съображения за сигурност.

Има няколко други раздела, които могат да се използват за персонализиране на услугата. За това упражнение стойностите по подразбиране в тези раздели са достатъчни. Изберете бутона Инсталиране на услугата(Install service ) .

  1. Когато услугата е инсталирана, ще видите, че Service “logCPUAvg” installed successfully! прозорец. Изберете OK , за да го затворите. Това приключва инсталацията.

  1. Отворете Windows Services Manager и се уверете, че услугата е там.

  1. Стартирайте(Run) услугата, за да сте сигурни, че ще работи.

  1. За да проверите дали тази услуга работи, използвайте File Explorer , за да отидете до мястото, където се предполага, че дневникът трябва да бъде запазен, за да видите дали съществува.

nssm-check-log.png

Премахване на услуга на Windows с NSSM(Removing a Windows Service With NSSM)

Може би вече не е нужно да наблюдавате(monitor your CPU) натоварването на вашия процесор, така че искате да се отървете от услугата. За щастие, NSSM прави това лесно. 

  1. В диспечера на услугите на Windows(Windows Services Manager) спрете услугата. Направете това, като изберете услугата Log CPU Average Load , след което изберете квадратния бутон за спиране в лентата с инструменти или връзката Stop the service от лявата страна.

  1. Отворете командния ред на Windows(Windows Command Prompt ) или PowerShell като администратор.
  2. Въведете командата nssm remove logCPUAvg и изпълнете командата. 

  1. NSSM ще ви помоли да потвърдите. Изберете Да(Yes) .

  1. Когато услугата бъде премахната, ще видите, че Service “logCPUAvg” removed successfully! Потвърждение. Изберете OK и сте готови.

Това е всичко. Добра идея е да проверите мениджъра на услугите, за да се уверите, че услугата вече не е там. Ако все още виждате услугата, може да се наложи да опресните екрана и тя трябва да изчезне.

Услугите са чудесен начин за стартиране на приложения или скриптове, които трябва да се изпълняват през цялото време, рестартиране, ако не успеят, или се нуждаят от привилегии, различни от текущия потребител. Ако не се нуждаете от вашето приложение или скрипт, за да направите всички тези неща, помислете за използването на планирана задача(using a Scheduled Task) .



About the author

Аз съм рецензент на софтуер и експерт по продуктивността. Преглеждам и пиша софтуерни рецензии за различни софтуерни приложения, като Excel, Outlook и Photoshop. Отзивите ми са добре информирани и дават обективна представа за качеството на приложението. Пиша софтуерни ревюта от 2007 г.



Related posts