Configurer une application ou un script en tant que service Windows

Envoyer

Dans cet article, nous allons voir comment créer un service Windows afin de lancer une application ou même un script PowerShell en tant que service. Après quelques recherches, je suis tombé sur une KB Microsoft très intéressante sur le sujet dont voici le lien : http://support.microsoft.com/kb/137890/fr. Cet article s’appuie en grande partie dessus.

Premièrement, nous allons récupérer l’exécutable « srvany.exe » disponible depuis le « Windows Server 2003 Ressource Kit Tools » (http://www.microsoft.com/en-us/download/details.aspx?id=17657). Il permet de lancer n’importe quel programme en tant que service. Le problème est qu’il est déprécié à partir de Windows Server 2008 mais il n’y a pas vraiment de remplaçant et il fonctionne bien sous Windows Server 2008 ou Windows Server 2008 R2.

Notez également que vous n’êtes obligé d’installer le Ressource Kit dans son intégralité. Vous pouvez récupérer l’exécutable en décompressant le fichier d’installation à l’aide de 7-Zip. Dans le cadre de notre article, je l’ai toutefois installé et son chemin d’accès par défaut est « C:\Program Files (x86)\Windows Resource Kits\Tools\srvany.exe ».

Maintenant, nous allons créer notre service à l’aide de l’outil « sc ». Ouvrez une invite de commandes et lancez la commande suivante « sc create MonService binPath= "C:\Program Files (x86)\Windows Resource Kits\Tools\srvany.exe"  DisplayName= "Mon service personalisé" »

 

Le service est désormais créé mais il faut préciser l’application à exécuter en tant que service. Pour cela, il faut passer par l’éditeur de registre. Vous allez donc lancer « regedit » depuis « Démarrer | Exécuter » et vous rendre vers le chemin suivant : « HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MonService ».

 

 

 

 

 

 

Vous allez créer une nouvelle clé que vous appellerez « Parameters » à l’aide d’un clic droit sur la clé « MonService » (correspondant au nom du service donné avec l’outil « sc »).

 

 

 

 

 

Au sein de cette clé, ajoutez une valeur chaîne (REG_SZ) nommée « Application » avec, comme donnée, le chemin de votre application (dans notre exemple nous avons pris Notepad).

 

 

 

 

 

 

 

Il vous suffit enfin de lancez votre service personnalisé et de faire les modifications nécessaires depuis la console « Services » en lançant la commande « services.msc » depuis « Démarrer | Exécuter ».

 

 

 

 


 

Maintenant, allons un poil plus loin et essayons de lancer un script PowerShell en tant que service. En guise d’exemple, j’ai créé le script basique suivant :

$date = get-date
"$($date): script is starting" > C:\temp\output.txt


while ( !$stop )
{
 $date = get-date
 "$($date): script is running" >> C:\temp\output.txt
 sleep 10
}

 

Il suffit de modifier la donnée de valeur chaîne « Application » depuis la base de registre avec la ligne suivante : « C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -executionPolicy unrestricted -file C:\temp\ScriptPosh.ps1 ».

En clair, nous précisons le chemin de l’application « powershell.exe » et nous rajoutons les paramètres :

  • « -file » pour spécifier le chemin de notre script fraichement créé.
  • « -executionPolicy » pour éviter que la stratégie d’exécution PowerShell soit trop contraignante.

 

Lors du démarrage du service, vous devriez voir le fichier « output.txt » s’alimenter au fur et à mesure.

 

 

How to Find Active Directory Schema Update History by Using PowerShell

Mise à jour le Jeudi, 01 Août 2013 08:59