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 eine PowerShell-Skript zum Überwachen von Ports oder eine Webserver, der eine Seite in Ihrem Heimnetzwerk hostet.

Wenn Sie möchten, dass ein Prozess, ein Skript oder ein Programm ausgeführt wird, solange der Computer eingeschaltet ist, müssen Sie eine Windows-Dienst erstellen.

Was brauche ich, um einen Windows-Dienst zu erstellen?

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

  • Administratorzugriff auf dem Computer
  • Als Dienst auszuführen (PowerShell-Skript, Programm usw.)
  • NSSM (Non-Sucking Service Manager) installiert
  • h2>Was ist der nicht saugende Service Manager?

    Ja, Sie können einen solchen Namen nicht löschen, ohne ihn zu erklären. Sicher, der Name ist unglücklich, aber er ist korrekt. Der Non-Sucking Service Manager (NSSM) ist wohl der einfachste Weg, einen Windows-Dienst zu erstellen, der sowohl sehr zuverlässig als auch konfigurierbar ist. Außerdem ist es kostenlos und Quelloffene Software (OSS).

    NSSM kann über die Windows-Eingabeaufforderung oder eine grafische Benutzeroberfläche (GUI) verwendet werden ). Dies bedeutet, dass jeder es verwenden kann. NSSM kann unter jeder Windows-Version verwendet werden, die auf Windows 2000 zurückgeht. Es gibt 32-Bit und 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 Laden Sie NSSM von der Website herunter, Klonen Sie NSSM von Git oder Installieren Sie NSSM mit Chocolatey. Chocolatey ist ein Paketmanager für Windows. Die Installationsmethoden variieren je nach Route. Bitte konsultieren Sie die Anweisungen von NSSM. In unserem Beispiel laden wir es von der NSSM-Website herunter und installieren es in C: \ WINDOWS \ system32.

    In_content_1 all: [300x250] / dfp: [640 x 360]->

    Erstellen eines Windows-Dienstes mit NSSM

    In diesem Beispiel erstellen wir einen Dienst aus PowerShell-Skript zum Protokollieren Prozentsatz der durchschnittlichen CPU-Auslastung.

    1. Kopieren Sie dieses Skript und speichern Sie es als log-CPULoadPercentage.ps1an einem Ort, auf den wahrscheinlich niemand anderes zugreifen kann. Versuchen Sie, das Verzeichnis C: / Scriptszu erstellen und dort zu speichern. Erstellen Sie außerdem in Skripten einen Ordner mit dem Namen Protokolle. Beachten Sie, dass der Pfad zum Skript C: /Scripts/log-CPULoadPercentage.ps1lautet. Das benötigen Sie später.
    2. Hinweis: Alle Zeilen unter 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-Eingabeaufforderungoder in PowerShell erfolgen.Öffnen Sie es als Administrator.
      2. Geben Sie den Befehl nssm install logCPUAvgein und führen Sie ihn aus. Das Fenster NSSM-Dienstinstallationsprogrammwird geöffnet.
        1. Klicken Sie auf die Schaltfläche mit den Ellipsen neben dem Feld Pfad:und navigieren Sie zu Powershell.exebefindet sich normalerweise unter C: \ Windows \ System32 \. Wählen Sie Powershell.exe. Die Felder Pfad:und Startverzeichnis:werden automatisch ausgefüllt.
          1. Geben Sie Folgendes in das Feld Argumente ein:: -ExecutionPolicy Bypass -NoProfile -File “C: \ PathToScript \ get-Script.ps1”, wobei der letzte Teil der Pfad ist zu Ihrem PowerShell-Skript und dem Skriptnamen.
            1. Wählen Sie die Registerkarte Details. Geben Sie im Feld Anzeigename:ein, wie der Dienst im Windows-Dienst-Manager angezeigt werden soll. Geben Sie dann in das Feld Beschreibung:ein, was es tut. Der Starttyp:kann als Automatisch, Automatisch (verzögerter Start), Manuelloder festgelegt werden Deaktiviert. Für diese Übung ist Automatisch gut.
              1. Wählen Sie die Registerkarte Anmelden. Wählen Sie das Optionsfeld Dieses Konto: 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. Im Idealfall 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 Systemkontoauswählen, es wird jedoch aus Sicherheitsgründen nicht empfohlen.
              2. Es gibt mehrere andere Registerkarten, mit denen Sie das anpassen können Bedienung. Für diese Übung sind die Standardwerte in diesen Registerkarten ausreichend. Wählen Sie die Schaltfläche Dienst installieren.

                1. Wenn der Dienst installiert ist, wird der Dienst "logCPUAvg" erfolgreich installiert!Fenster. Wählen Sie OK, um es zu schließen. Damit ist die Installation abgeschlossen.
                  1. Öffnen Sie den Windows Services Managerund stellen Sie sicher, dass der Dienst vorhanden ist.
                    1. Führen Sie den Dienst aus, um sicherzustellen, dass er ausgeführt wird.
                      1. Um zu überprüfen, ob dieser Dienst ausgeführt wird, navigieren Sie mit Datei-Explorerzu dem Ort, an dem das Protokoll gespeichert werden soll, um festzustellen, ob es vorhanden ist.
                      2. nssm-check-log.png

                        Entfernen eines Windows-Dienstes Mit NSSM

                        müssen Sie möglicherweise nicht mehr Überwachen Sie Ihre CPU laden, um den Dienst loszuwerden. Glücklicherweise macht NSSM das einfach.

                        1. Beenden Sie den Dienst im Windows Services Manager. Wählen Sie dazu den Dienst CPU CPU Average Loadaus und wählen Sie entweder die quadratische Stoppschaltfläche in der Symbolleiste oder den Link Dienst beendenauf der linken Seite.
                          1. Öffnen Sie entweder die Windows-Eingabeaufforderungoder PowerShellals Administrator.
                          2. Geben Sie den Befehl nssm remove logCPUAvgein und führen Sie den Befehl aus.
                            1. NSSM fordert Sie zur Bestätigung auf. Wählen Sie Ja.
                              1. Wenn der Dienst entfernt wird, wird das logCPUAvg Service “angezeigt ”Erfolgreich entfernt!Bestätigung. Wählen Sie OKund Sie sind fertig.
                              2. Das ist alles. Es ist eine gute Idee, den Servicemanager zu überprüfen, um sicherzustellen, dass der Service nicht mehr vorhanden ist. Wenn der Dienst weiterhin angezeigt wird, müssen Sie möglicherweise den Bildschirm aktualisieren, und er sollte nicht mehr angezeigt werden.

                                Dienste sind eine hervorragende Möglichkeit, Apps oder Skripts auszuführen, die ständig ausgeführt werden müssen. Starten Sie sich neu, wenn sie fehlschlagen oder benötigen andere Berechtigungen als der aktuelle Benutzer. Wenn Sie Ihre App oder Ihr Skript nicht benötigen, um all diese Dinge zu tun, ziehen Sie stattdessen Verwenden einer geplanten Aufgabe in Betracht.

                                Zusammenhängende Posts:


                                12.11.2020