Pour des opérations de maintenance, alléger un serveur ou corriger un problème applicatif, on peut souhaiter redémarrer de manière régulière un service sur un serveur Windows. C’est peut-être le cas pour faire une sauvegarde à froid d’un dossier, programmer un arrêt de maintenance, alléger la mémoire utilisée par une application… Un script en PowerShell peut faciliter les choses.
Ce tutoriel montre comment écrire un script PowerShell avec arrêt et démarrage de services Windows. Il s’agit donc d’une utilisation sur des serveurs Windows (WS22, WS19, WS16…) mais également sur des postes de travail (Windows 11, Windows 10…).
L’exemple ci-dessous est donné avec l’arrêt et le démarrage de deux services, dont l’un dépend de l’autre. C’est une situation courante où le NomService2 dépend de NomServer1 et ne doit pas démarrer avant. Par exemple, s’il faut redémarrer plusieurs services d’un SGBD comme Oracle, ou si une application métier ne doit pas démarrer avant le service du serveur web.
###### Redémarrage des services NomService ##### Stop-Service -Name NomService2 sleep 30 Stop-Service -Name NomService1 sleep 30 Start-Service -Name NomService1 sleep 60 Start-Service -Name NomService2
Des « sleep » sont ajoutés pour patienter entre les différentes étapes, afin de laisser le temps aux services de bien démarrer ou s’arrêter. Une temporisation qui n’est pas obligatoire mais qui peut permettre d’éviter des erreurs, notamment après le démarrage d’un premier service et avant le déclenchement du second.
Il est aussi possible d’ajouter l’attribut « -force » pour forcer l’arrêt d’un service.
D’autres syntaxes pour « Start-Service » et « Stop-Service » sont détaillées sur cette page Microsoft.