Windows Hizmeti Nasıl Oluşturulur

Bazen, bilgisayarınızda oturum açmış olsanız da olmasanız da çalışmaya devam etmek için bir uygulamaya veya komut dosyasına ihtiyacınız vardır. Belki de bu, bağlantı noktalarını izlemek için bir PowerShell betiği(PowerShell script to monitor ports) veya ev ağınızda bir sayfa barındıran bir web sunucusudur(web server hosting a page on your home network) .

Mesele şu ki, bilgisayar açık olduğu sürece bir işlemin, komut dosyasının veya programın çalışmasını istiyorsanız, bir Windows Hizmeti(Windows Service) oluşturmanız gerekir .

Windows Hizmeti Oluşturmak için Neye İhtiyacım Var?(What Do I Need to Create a Windows Service?)

Windows 10'da bir (Windows 10)Windows hizmeti oluşturmak için birkaç önkoşul vardır: 

  • Bilgisayarda yönetici(Administrator) erişimi
  • Hizmet olarak çalıştırılacak bir şey ( PowerShell Komut Dosyası(PowerShell Script) , program vb.)
  • Emici Olmayan Servis Yöneticisi(Service Manager) ( NSSM ) yüklü

Emici Olmayan Servis Yöneticisi Nedir?(What Is the Non-Sucking Service Manager?)

Evet, böyle bir ismi açıklamadan bırakamazsınız. Elbette isim talihsiz ama yine de doğru. Emici Olmayan Hizmet Yöneticisi(Service Manager) ( NSSM ) , hem son derece güvenilir hem de yapılandırılabilir bir Windows hizmeti oluşturmanın tartışmasız en kolay yoludur . Ayrıca, ücretsiz ve Açık Kaynaklı Yazılım(Open Source Software) (OSS).

NSSM, Windows Komut İstemi(Windows Command Prompt) veya bir grafik kullanıcı arabirimi ( GUI ) aracılığıyla kullanılabilir. Bu, herkesin kullanabileceği anlamına gelir. NSSM, Windows 2000(Windows 2000) dahil olmak üzere Windows'un(Windows) herhangi bir sürümünde kullanılabilir . 32 bit ve 64 bit(32-bit and 64-bit) sürümleri vardır . 64 bit bilgisayar kullanıyorsanız, önce o sürümü deneyin. Çalışmazsa, 32 bit sürüme geri dönün. 

NSSM'yi web sitesinden indirebilir(download NSSM from the website) , NSSM'yi Git'ten kopyalayabilir(clone NSSM from Git) veya NSSM'yi Chocolatey ile kurabilirsiniz(install NSSM with Chocolatey) . Chocolatey, Windows için bir paket yöneticisidir(Chocolatey is a package manager for Windows) . Kurulum(Installation) yöntemleri, kullandığınız rotaya bağlı olarak değişecektir. Lütfen(Please) NSSM'nin talimatlarına bakın . (NSSM)Örneğimiz için, NSSM web sitesinden indiriyor ve C:\WINDOWS\system32 içine kuruyoruz .

NSSM ile Windows Hizmeti Oluşturun(Create a Windows Service With NSSM)

Bu örnekte, CPU ortalama yük yüzdesini(CPU average load percentage) günlüğe kaydetmek için bir PowerShell betiğinden(PowerShell script) bir hizmet oluşturacağız . 

  1. Bu betiği kopyalayın ve log-CPULoadPercentage.ps1 olarak başka kimsenin erişemeyeceği bir yere kaydedin. C:/Scripts dizinini oluşturup orada saklamayı deneyin. Ayrıca, Komut Dosyalarında (Scripts)Günlükler(Logs) adlı bir klasör oluşturun . Komut dosyasının yolunun C:/Scripts/log-CPULoadPercentage.ps1 olduğunu unutmayın . Buna daha sonra ihtiyacın olacak.

Not(Note) : Aşağıdaki tüm satırlar ve ardından # sembolü yorumdur ve komut dosyasını etkilemez.

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. Bu, Windows Komut İstemi'nde(Windows Command Prompt) veya PowerShell'de yapılabilir. (PowerShell. )Yönetici olarak açın(Open it as Administrator) .
  2. nssm install logCPUAvg komutunu girin ve çalıştırın. NSSM hizmeti yükleyici(NSSM service installer) penceresi açılacaktır.

  1. (Click)Path: alanının yanındaki üç nokta düğmesine tıklayın , normalde C:\Windows\System32\powershell.exe'ye(powershell.exe ) gidin . powershell.exe'yi seçin. Yol :(Path:) ve Başlangıç ​​dizini:(Startup directory:) alanları otomatik olarak doldurulacaktır.

  1. Argümanlar:(Arguments:) alanına şunu girin : -ExecutionPolicy Bypass -NoProfile -File “C:\PathToScript\get-Script.ps1” , burada son kısım PowerShell betiğinizin yolu ve betik adıdır.  

  1. Ayrıntılar(Details) sekmesini seçin . Görünen ad:(Display name: ) alanına , hizmetin Windows Hizmetleri(Services) yöneticisinde olduğu gibi görünmesini istediğiniz şeyi girin . Ardından, Açıklama:(Description:) alanına ne yaptığını girin. Başlangıç ​​türü: (Startup type: )Otomatik(Automatic) , Otomatik (Gecikmeli Başlatma)(Automatic (Delayed Start)) , Manuel(Manual) veya Devre Dışı(Disabled) olarak ayarlanabilir . Bu alıştırma için Otomatik(Automatic) iyidir.

  1. Oturum aç(Log on ) sekmesini seçin . Bu hesap(This account) : radyo düğmesini seçin ve hizmetin çalışacağı hesabı ve şifreyi girin. Hizmetin altında çalışacağı bir hesap seçmeniz gerekecek. İdeal olarak, yalnızca bu hizmeti çalıştırmak için oluşturulmuş bir Windows hesabınız olacaktır. (Windows)Bu hesabın izinleri yalnızca hizmetin yapması gerekenlerle sınırlı olmalıdır. Yerel Sistem hesabını(Local System account) seçebilirsiniz , ancak güvenlik nedeniyle önerilmez.

Hizmeti özelleştirmek için kullanılabilecek birkaç sekme daha vardır. Bu alıştırma için bu sekmelerdeki varsayılan değerler yeterlidir. Hizmet yükle(Install service ) düğmesini seçin .

  1. Hizmet kurulduğunda, Service “logCPUAvg” installed successfully! pencere. Kapatmak için Tamam'ı(OK) seçin . Bu, kurulumu tamamlar.

  1. Windows Hizmetleri Yöneticisi'ni(Windows Services Manager ) açın ve hizmetin orada olduğundan emin olun.

  1. Çalışacağından(Run) emin olmak için hizmeti çalıştırın.

  1. Bu hizmetin çalıştığını doğrulamak için, var olup olmadığını görmek için günlüğün kaydedilmesi gereken yere gitmek için Dosya Gezgini'ni kullanın.(File Explorer )

nssm-check-log.png

NSSM ile Windows Hizmetini Kaldırma(Removing a Windows Service With NSSM)

Belki artık CPU yükünüzü izlemenize(monitor your CPU) gerek yoktur , bu nedenle hizmetten kurtulmak istersiniz. Neyse ki, NSSM bunu kolaylaştırıyor. 

  1. Windows Hizmetleri Yöneticisi'nde(Windows Services Manager) hizmeti durdurun . Bunu, Günlük CPU Ortalama Yükü(Log CPU Average Load ) hizmetini seçip ardından araç çubuğundaki kare durdurma düğmesini veya sol taraftaki Hizmeti durdur bağlantısını seçerek yapın.(Stop the service)

  1. Windows Komut İstemi'ni(Windows Command Prompt ) veya PowerShell'i(PowerShell) Yönetici olarak açın .
  2. nssm remove logCPUAvg komutunu girin ve komutu çalıştırın. 

  1. NSSM sizden onaylamanızı isteyecektir. Evet'i(Yes) seçin .

  1. Hizmet kaldırıldığında, Service “logCPUAvg” removed successfully! Onayla. Tamam'ı(OK) seçin ve bitirdiniz.

Bu kadar. Hizmetin artık orada olmadığından emin olmak için hizmet yöneticisini kontrol etmek iyi bir fikirdir. Hizmeti hala görüyorsanız, ekranı yenilemeniz gerekebilir ve gitmiş olmalıdır.

Hizmetler, sürekli çalışması gereken, başarısız olmaları durumunda kendilerini yeniden başlatmaları veya mevcut kullanıcıdan farklı ayrıcalıklara ihtiyaç duyan uygulamaları veya komut dosyalarını çalıştırmanın harika bir yoludur. Tüm bunları yapmak için uygulamanıza veya komut dosyanıza ihtiyacınız yoksa, bunun yerine Zamanlanmış Görev kullanmayı(using a Scheduled Task) düşünün .



About the author

İş ve teknolojide, Windows 10 ve Windows 11/10 çok önemli araçlardır. Bilgisayarlarla her zamankinden daha kolay ve güvenli bir şekilde etkileşim kurmanıza ve herhangi bir güvenlik riski olmadan güçlü ancak özelleştirilebilir uygulamaları çalıştırmanıza olanak tanır. Bu araçlar, çevrimiçi varlıklarını büyütmek ve yeni müşterilere ulaşmak isteyen işletmeler için de gereklidir. Bu nedenle, Windows 10 ve Windows 11/10'daki becerilerimin beni böyle bir iş veya iş için harika bir aday yaptığını söyleyebilirim.



Related posts