Comment créer un service Windows

Parfois, vous avez besoin d'une application ou d'un script pour continuer à fonctionner, que vous soyez connecté ou non à votre ordinateur. Il s'agit peut-être d'un script PowerShell pour surveiller les ports(PowerShell script to monitor ports) ou d'un serveur Web hébergeant une page sur votre réseau domestique(web server hosting a page on your home network) .

Le fait est que si vous souhaitez qu'un processus, un script ou un programme s'exécute tant que l'ordinateur est allumé, vous devez créer un Windows Service .

De quoi ai-je besoin pour créer un service Windows ?(What Do I Need to Create a Windows Service?)

Pour créer un service Windows dans Windows 10 , il y a quelques prérequis : 

  • Accès administrateur(Administrator) sur l'ordinateur
  • Quelque chose à exécuter en tant que service ( PowerShell Script , programme, etc.)
  • Non-Sucking Service Manager ( NSSM ) installé

Qu'est-ce que le gestionnaire de service non aspirant ?(What Is the Non-Sucking Service Manager?)

Oui, vous ne pouvez pas laisser tomber un nom comme ça sans l'expliquer. Bien sûr, le nom est malheureux, mais il est exact. Le gestionnaire de service(Service Manager) non aspirant ( NSSM ) est sans doute le moyen le plus simple de créer un service Windows à la fois hautement fiable et configurable. De plus, c'est un logiciel gratuit et Open Source(Open Source Software) (OSS).

NSSM peut être utilisé via l' invite de commande Windows(Windows Command Prompt) ou une interface utilisateur graphique ( GUI ). Cela signifie que n'importe qui peut l'utiliser. NSSM peut être utilisé sur n'importe quelle version de Windows depuis et y compris Windows 2000 . Il existe des versions 32 bits et 64 bits . (32-bit and 64-bit)Si vous utilisez un ordinateur 64 bits, essayez d'abord cette version. Si cela ne fonctionne pas, revenez à la version 32 bits. 

Vous pouvez télécharger NSSM à partir du site Web(download NSSM from the website) , cloner NSSM à partir de Git(clone NSSM from Git) ou installer NSSM avec Chocolatey(install NSSM with Chocolatey) . Chocolatey est un gestionnaire de paquets pour Windows(Chocolatey is a package manager for Windows) . Les méthodes d' installation(Installation) varient en fonction de l'itinéraire que vous empruntez. Veuillez(Please) consulter les instructions de NSSM . Pour notre exemple, nous téléchargeons depuis le site Web NSSM et l'installons dans C:\WINDOWS\system32 .

Créer un service Windows avec NSSM(Create a Windows Service With NSSM)

Pour cet exemple, nous allons créer un service à partir d'un script PowerShell(PowerShell script) pour consigner le pourcentage de charge moyenne du processeur(CPU average load percentage)

  1. Copiez et enregistrez ce script sous le nom log-CPULoadPercentage.ps1 dans un emplacement auquel personne d'autre n'est susceptible d'accéder. Essayez de créer le répertoire C:/Scripts et de l'y stocker. Créez également un dossier dans Scripts appelé Logs . Notez que le chemin d'accès au script est C:/Scripts/log-CPULoadPercentage.ps1 . Vous en aurez besoin plus tard.

Remarque(Note) : Toutes les lignes ci-dessous suivies du symbole # sont des commentaires et n'affecteront pas le script.

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. Cela peut être fait dans l' invite de commande Windows(Windows Command Prompt) ou dans PowerShell. Ouvrez-le en tant qu'administrateur(Open it as Administrator) .
  2. Entrez la commande nssm install logCPUAvg et exécutez-la. La fenêtre du programme d'installation du service NSSM(NSSM service installer) s'ouvrira.

  1. Cliquez(Click) sur le bouton représentant des points de suspension à côté du champ Path :, accédez au fichier powershell.exe(powershell.exe ) qui se trouve normalement dans C:\Windows\System32\ . Sélectionnez powershell.exe. Les champs Chemin :(Path:) et Répertoire de démarrage :(Startup directory:) seront automatiquement renseignés.

  1. Entrez ce qui suit dans le champ Arguments : : -ExecutionPolicy Bypass -NoProfile -File “C:\PathToScript\get-Script.ps1” , où la dernière partie est le chemin d'accès à votre script   PowerShell et le nom du script.(PowerShell)

  1. Sélectionnez l' onglet Détails . (Details)Entrez ce que vous souhaitez que le service s'affiche dans le gestionnaire de services Windows dans le champ (Windows) Nom d'affichage :(Display name: ) . Ensuite, entrez ce qu'il fait dans le champ Description : . Le type de démarrage :(Startup type: ) peut être défini sur Automatique(Automatic) , Automatique (démarrage différé)(Automatic (Delayed Start)) , Manuel(Manual) ou Désactivé(Disabled) . Pour cet exercice, Automatique(Automatic) est bon.

  1. Sélectionnez l' onglet Connexion . (Log on )Sélectionnez Ce compte(This account) : bouton radio et entrez le compte et le mot de passe sous lesquels le service sera exécuté. Vous devrez choisir un compte sous lequel le service sera exécuté. Idéalement, vous aurez un compte Windows créé uniquement pour exécuter ce service. Les autorisations de ce compte doivent être limitées à ce que le service doit faire. Vous pouvez choisir le compte Système local(Local System account) , mais ce n'est pas recommandé pour des raisons de sécurité.

Plusieurs autres onglets peuvent être utilisés pour personnaliser le service. Pour cet exercice, les valeurs par défaut de ces onglets sont suffisantes. Sélectionnez le bouton Installer le service .(Install service )

  1. Lorsque le service est installé, vous verrez le Service “logCPUAvg” installed successfully! la fenêtre. Sélectionnez OK pour le fermer. Cela conclut l'installation.

  1. Ouvrez le gestionnaire de services Windows(Windows Services Manager ) et assurez-vous que le service est là.

  1. Exécutez(Run) le service pour vous assurer qu'il fonctionnera.

  1. Pour vérifier que ce service est en cours d'exécution, utilisez l' Explorateur de fichiers(File Explorer ) pour accéder à l'endroit où le journal est censé être enregistré pour voir s'il existe.

nssm-check-log.png

Suppression d'un service Windows avec NSSM(Removing a Windows Service With NSSM)

Peut-être que vous n'avez plus besoin de surveiller la charge de votre processeur(monitor your CPU) , vous souhaitez donc vous débarrasser du service. Heureusement, NSSM rend cela facile. 

  1. Dans le Gestionnaire de services Windows(Windows Services Manager) , arrêtez le service. Pour ce faire, sélectionnez le service Log CPU Average Load , puis sélectionnez le bouton d'arrêt carré dans la barre d'outils ou le lien Arrêter le service(Stop the service) sur le côté gauche.

  1. Ouvrez l' invite de commande Windows(Windows Command Prompt ) ou PowerShell en tant qu'administrateur.
  2. Entrez la commande nssm remove logCPUAvg et exécutez la commande. 

  1. NSSM vous demandera de confirmer. Sélectionnez Oui(Yes) .

  1. Lorsque le service est supprimé, vous verrez le Service “logCPUAvg” removed successfully! Confirmation. Sélectionnez OK et vous avez terminé.

C'est tout. C'est une bonne idée de vérifier le gestionnaire de services pour s'assurer que le service n'est plus là. Si vous voyez toujours le service, vous devrez peut-être actualiser l'écran et il devrait disparaître.

Les services sont un excellent moyen d'exécuter des applications ou des scripts qui doivent s'exécuter tout le temps, se redémarrer s'ils échouent ou nécessitent des privilèges différents de l'utilisateur actuel. Si vous n'avez pas besoin de votre application ou de votre script pour faire toutes ces choses, envisagez plutôt d'utiliser une tâche planifiée .(using a Scheduled Task)



About the author

Je suis un technicien Windows 10 et j'aide les particuliers et les entreprises à tirer parti du nouveau système d'exploitation depuis de nombreuses années. J'ai une richesse de connaissances sur Microsoft Office, y compris comment personnaliser l'apparence et personnaliser les applications pour différents utilisateurs. De plus, je sais utiliser l'application Explorer pour explorer et rechercher des fichiers et des dossiers sur mon ordinateur.



Related posts