So erstellen Sie einen Windows-Dienst

Manchmal benötigen Sie eine App oder ein Skript, um weiter ausgeführt zu werden, unabhängig davon, ob Sie an Ihrem Computer angemeldet sind oder nicht. Vielleicht ist es ein PowerShell-Skript zum Überwachen von Ports(PowerShell script to monitor ports) oder ein Webserver, der eine Seite in Ihrem Heimnetzwerk hostet(web server hosting a page on your home network) .

Der Punkt ist, dass Sie einen Windows-Dienst(Windows Service) erstellen müssen, wenn Sie möchten, dass ein Prozess, ein Skript oder ein Programm ausgeführt wird, solange der Computer eingeschaltet ist .

Was benötige ich, um einen Windows-Dienst zu erstellen?(What Do I Need to Create a Windows Service?)

Um einen Windows -Dienst in Windows 10 zu erstellen , gibt es einige Voraussetzungen: 

  • Administratorzugriff(Administrator) auf dem Computer
  • Etwas, das als Dienst ausgeführt werden soll ( PowerShell-Skript(PowerShell Script) , Programm usw.)
  • Non-Sucking Service Manager ( NSSM ) installiert

Was ist der Non-Sucking Service Manager?(What Is the Non-Sucking Service Manager?)

Ja, man kann so einen Namen nicht fallen lassen, ohne ihn zu erklären. Sicher, der Name ist unglücklich, aber er ist zutreffend. Der Non-Sucking Service Manager ( NSSM ) ist wohl die einfachste Möglichkeit, einen Windows -Dienst zu erstellen, der sowohl äußerst zuverlässig als auch konfigurierbar ist. Außerdem ist es kostenlos und Open Source Software (OSS).

NSSM kann über die Windows-Eingabeaufforderung(Windows Command Prompt) oder eine grafische Benutzeroberfläche ( GUI ) verwendet werden. Dies bedeutet, dass jeder es verwenden kann. NSSM kann auf jeder Windows-Version ab Windows 2000(Windows 2000) (einschließlich) verwendet werden . Es gibt 32-Bit- und 64-Bit-(32-bit and 64-bit) Versionen. Wenn Sie einen 64-Bit-Computer verwenden, versuchen Sie zuerst diese Version. Wenn es nicht funktioniert, greifen Sie auf die 32-Bit-Version zurück. 

Sie können NSSM von der Website herunterladen(download NSSM from the website) , NSSM von Git klonen(clone NSSM from Git) oder NSSM mit Chocolatey installieren(install NSSM with Chocolatey) . Chocolatey ist ein Paketmanager für Windows(Chocolatey is a package manager for Windows) . Die Installationsmethoden(Installation) variieren je nachdem, welche Route Sie wählen. Bitte(Please) konsultieren Sie die Anweisungen von NSSM . In unserem Beispiel laden wir es von der NSSM - Website herunter und installieren es in C:\WINDOWS\system32 .

Erstellen Sie einen Windows-Dienst mit NSSM(Create a Windows Service With NSSM)

In diesem Beispiel erstellen wir einen Dienst aus einem PowerShell-Skript , (PowerShell script)um den Prozentsatz der durchschnittlichen CPU-Auslastung(CPU average load percentage) zu protokollieren . 

  1. Kopieren Sie dieses Skript und speichern Sie es als log-CPULoadPercentage.ps1 an einem Ort, auf den wahrscheinlich kein anderer Zugriff hat. Versuchen Sie, das Verzeichnis C:/Scripts zu erstellen und dort zu speichern. Erstellen Sie außerdem in Scripts einen Ordner mit dem Namen Logs . Beachten Sie, dass der Pfad zum Skript C:/Scripts/log-CPULoadPercentage.ps1 . Das brauchst du später.

Hinweis(Note) : Alle Zeilen darunter, gefolgt von dem #-Symbol, sind Kommentare und wirken sich nicht auf das Skript aus.

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. Dies kann entweder in der Windows-Eingabeaufforderung(Windows Command Prompt) oder in PowerShell erfolgen. (PowerShell. )Öffnen Sie es als Administrator(Open it as Administrator) .
  2. Geben Sie den Befehl nssm install logCPUAvg ein(nssm install logCPUAvg) und führen Sie ihn aus. Das Installationsfenster des NSSM-Dienstes(NSSM service installer) wird geöffnet.

  1. Klicken Sie(Click) auf die Ellipsen-Schaltfläche neben dem Feld Path :, navigieren Sie zu powershell.exe , die sich normalerweise unter C:\Windows\System32\ befindet . Wählen Sie powershell.exe aus. Die Felder Pfad:(Path:) und Startverzeichnis:(Startup directory:) werden automatisch ausgefüllt.

  1. Geben Sie Folgendes in das Feld Argumente: ein: (Arguments:)-ExecutionPolicy Bypass -NoProfile -File “C:\PathToScript\get-Script.ps1” , wobei der letzte Teil der Pfad zu Ihrem PowerShell - Skript und der Skriptname ist.  

  1. Wählen Sie die Registerkarte Details aus. (Details)Geben Sie in das Feld Anzeigename:(Display name: ) ein, wie der Dienst im Windows -Dienste-(Services) Manager angezeigt werden soll . Geben Sie dann in das Feld Beschreibung:(Description:) ein, was es bewirkt . Der Starttyp:(Startup type: ) kann als Automatisch(Automatic) , Automatisch (Verzögerter Start)(Automatic (Delayed Start)) , Manuell(Manual) oder Deaktiviert(Disabled) eingestellt werden . Für diese Übung ist Automatisch(Automatic) gut.

  1. Wählen Sie die Registerkarte Anmelden . (Log on )Wählen Sie das Optionsfeld Dieses Konto(This account) : und geben Sie das Konto und das Kennwort ein, unter dem der Dienst ausgeführt wird. Sie müssen ein Konto auswählen, unter dem der Dienst ausgeführt wird. Idealerweise haben Sie ein Windows -Konto, das nur zum Ausführen dieses Dienstes erstellt wurde. Die Berechtigungen dieses Kontos sollten nur auf das beschränkt sein, was der Dienst tun muss. Sie können das lokale Systemkonto(Local System account) auswählen , dies wird jedoch aus Sicherheitsgründen nicht empfohlen.

Es gibt mehrere andere Registerkarten, die zum Anpassen des Dienstes verwendet werden können. Für diese Übung sind die Standardwerte in diesen Registerkarten ausreichend. Wählen Sie die Schaltfläche Dienst installieren .(Install service )

  1. Wenn der Dienst installiert ist, sehen Sie, dass der Service “logCPUAvg” installed successfully! Fenster. Wählen Sie OK , um es zu schließen. Damit ist die Installation abgeschlossen.

  1. Öffnen Sie den Windows-Dienste-Manager(Windows Services Manager ) und stellen Sie sicher, dass der Dienst vorhanden ist.

  1. Führen Sie(Run) den Dienst aus, um sicherzustellen, dass er ausgeführt wird.

  1. Um zu überprüfen, ob dieser Dienst ausgeführt wird, verwenden Sie den Datei-Explorer(File Explorer ) , um zu dem Ort zu navigieren, an dem das Protokoll gespeichert werden soll, um festzustellen, ob es vorhanden ist.

nssm-check-log.png

Entfernen eines Windows-Dienstes mit NSSM(Removing a Windows Service With NSSM)

Vielleicht müssen Sie Ihre CPU(monitor your CPU) -Auslastung nicht mehr überwachen, also möchten Sie den Dienst loswerden. Glücklicherweise macht NSSM das einfach. 

  1. Beenden Sie im Windows-Dienste-Manager den Dienst . (Windows Services Manager)Wählen Sie dazu den Dienst " Durchschnittliche CPU(Log CPU Average Load ) -Auslastung protokollieren" und dann entweder die quadratische Stopp-Schaltfläche in der Symbolleiste oder den Link Dienst(Stop the service) beenden auf der linken Seite aus.

  1. Öffnen Sie entweder die Windows-Eingabeaufforderung(Windows Command Prompt ) oder PowerShell als Administrator.
  2. Geben Sie den Befehl nssm remove logCPUAvg ein(nssm remove logCPUAvg) und führen Sie den Befehl aus. 

  1. NSSM fordert(NSSM) Sie zur Bestätigung auf. Wählen Sie Ja(Yes) aus .

  1. Wenn der Dienst entfernt wird, sehen Sie, dass der Service “logCPUAvg” removed successfully! Bestätigung. Wählen Sie OK und Sie sind fertig.

Das ist alles. Es ist eine gute Idee, den Dienstmanager zu überprüfen, um sicherzustellen, dass der Dienst nicht mehr vorhanden ist. Wenn Sie den Dienst immer noch sehen, müssen Sie möglicherweise den Bildschirm aktualisieren und er sollte verschwunden sein.

Dienste sind eine großartige Möglichkeit, Apps oder Skripts auszuführen, die ständig ausgeführt werden müssen, sich selbst neu starten, wenn sie fehlschlagen oder andere Berechtigungen als der aktuelle Benutzer benötigen. Wenn Sie Ihre App oder Ihr Skript nicht benötigen, um all diese Dinge zu tun, sollten Sie stattdessen eine geplante Aufgabe(using a Scheduled Task) verwenden.



About the author

Ich habe einen Hintergrund in Computertechnik und Informationstechnologie, der mir eine einzigartige Perspektive auf die Plattformen Windows 10 und 11 verschafft hat. Insbesondere bin ich sowohl mit der Windows 10 „Desktop Experience“ als auch mit dem Microsoft Edge-Browser erfahren. Meine Erfahrung mit diesen beiden Plattformen gibt mir ein tiefes Verständnis dafür, wie sie funktionieren, und mein Fachwissen in diesen Bereichen ermöglicht es mir, zuverlässige Ratschläge zu geben, wie sie verbessert werden können.



Related posts