Points clés
- Identifier les services à surveiller : constituez un tableau PowerShell des services Windows critiques (par exemple Print Spooler, Client DNS, Horloge Windows) afin de concentrer la surveillance sur les services qui influent réellement sur la disponibilité.
- Détecter les services arrêtés ou bloqués avec PowerShell : utilisez Get-Service et des requêtes WMI sur Win32_Service pour repérer les services arrêtés ou figés dans les états « Start Pending » ou « Stop Pending ».
- Planifier la surveillance des services avec le Planificateur de tâches : automatisez des vérifications récurrentes avec schtasks pour que les scripts s’exécutent toutes les quelques minutes, sans intervention manuelle.
- Consigner l’état de récupération des services dans le registre : inscrivez les horodatages et les résultats des redémarrages dans le registre Windows pour obtenir une piste d’audit légère, utile à la conformité et au reporting RMM.
- Configurer les actions de récupération intégrées : utilisez sc failure ou l’Éditeur du registre pour redémarrer automatiquement les services après un plantage. Cette approche convient aux défaillances plutôt qu’aux états bloqués.
Les services Windows sont des programmes qui exécutent des processus en arrière-plan au démarrage. Ils assurent la continuité du fonctionnement de l’ordinateur, mais le système peut ralentir ou tomber en panne si un ou plusieurs services restent bloqués dans un état « Démarrage » ou « Arrêt », voire s’arrêtent de façon inattendue. C’est là que l’automatisation devient précieuse : les utilisateurs finaux n’ont plus à attendre longtemps l’intervention du service informatique.
Poursuivez votre lecture pour découvrir différentes méthodes permettant de surveiller les services Windows automatiquement et de les redémarrer lorsqu’ils se bloquent, des scripts PowerShell et CMD (invite de commande) au Planificateur de tâches et au registre.
Méthodes de surveillance et de redémarrage des services Windows bloqués
La surveillance proactive, la récupération automatisée et une journalisation fiable sont essentielles pour maintenir en fonctionnement les services Windows critiques. Découvrez les méthodes ci-dessous pour disposer en permanence d’une approche structurée de la surveillance et du redémarrage des services essentiels.
Prérequis :
- Windows 10/11 (pour les postes de travail)
- Windows Server 2016 ou version ultérieure (pour les serveurs)
- PowerShell 5.1 ou version ultérieure
- Privilèges d’administrateur local
Conseil : consultez la section Points de vigilance avant de continuer.
Stratégies de déploiement recommandées :
| Cliquez pour choisir une méthode | Idéal pour les particuliers | Idéal pour les entreprises |
| Méthode 1 : identifier les services à surveiller | ✓ | ✓ |
| Méthode 2 : détecter les services arrêtés ou bloqués avec PowerShell | ✓ | ✓ |
| Méthode 3 : planifier une tâche de surveillance des services | ✓ | ✓ |
| Méthode 4 : consigner l’état de récupération des services dans le registre | ✓ | |
| Méthode 5 : configurer les actions de récupération intégrées (facultatif) | ✓ |
Méthode 1 : identifier les services à surveiller
Cette étape consiste à dresser la liste des services Windows critiques pour le fonctionnement du système et devant faire l’objet d’une surveillance. En vous concentrant uniquement sur les services essentiels, vous évitez de gaspiller des ressources.
📌 Cas d’usage :
- Établir la liste des services critiques sur l’ensemble des terminaux
- Surveiller les services des applications métier
- Définir une référence de configuration pour les politiques d’automatisation en entreprise
Étapes :
- Déterminez quels services Windows sont essentiels à votre environnement. Par exemple :
- Print Spooler pour l’impression
- Client DNS pour la résolution réseau
- Horloge Windows pour la synchronisation du domaine
- Déclarez-les dans un tableau PowerShell :
$servicesToMonitor = @( |
- Facultatif : enregistrez ces noms dans un fichier JSON ou CSV afin de faciliter les mises à jour sans modifier le script lui-même.
Méthode 2 : détecter les services arrêtés ou bloqués avec PowerShell
Cette méthode s’appuie sur PowerShell pour vérifier l’état de santé des services, redémarrer ceux qui ne fonctionnent pas et repérer ceux qui restent figés dans un état transitoire.
Cas d’usage :
- Redémarrer automatiquement le Client DNS pour corriger les échecs de résolution de noms
- Relancer Print Spooler pour rétablir les services d’impression
- Détecter les états « Start Pending »
Prérequis :
- Autorisations d’exécution des scripts PowerShell
- Accès WMI
Étapes :
- Exécutez ce script PowerShell :
foreach ($svc in $servicesToMonitor) { |
Ce script répertorie les services Windows avec PowerShell et récupère leur état actuel. S’il constate qu’un service n’est pas en cours d’exécution, il tente de le démarrer. Il consigne ensuite un message de réussite ou d’échec.
- Exécutez ce script WMI dans PowerShell :
| $stuck = Get-CimInstance -Class Win32_Service | Where-Object { $_.State -in @(“Start Pending”, “Stop Pending”) } |
Ce script interroge tous les services Windows via WMI et filtre ceux qui se trouvent dans un état d’attente, « Start Pending » ou « Stop Pending ». Il enregistre ensuite ces services dans la variable $stuck, ce qui vous permet de les examiner ou d’agir ultérieurement : arrêt forcé, redémarrage, alerte, etc.
Méthode 3 : planifier une tâche de surveillance des services
Cette méthode automatise l’exécution du script à intervalles définis grâce au Planificateur de tâches Windows, ce qui évite tout lancement manuel. Les services sont ainsi vérifiés en continu.
Cas d’usage :
- Lancer des vérifications toutes les quelques minutes sur les serveurs critiques
- Automatiser l’auto-réparation sur les terminaux sans RMM
- Garantir la disponibilité des services en dehors des heures ouvrées et le week-end
Prérequis :
- Accès au Planificateur de tâches
- Contexte SYSTEM ou compte de service
Étapes :
- Créez votre script de surveillance et enregistrez-le dans un emplacement connu. Par exemple, créez « MonitorServices.ps1 » et enregistrez-le dans C:\Scripts\.
- Avec PowerShell, créez une tâche planifiée qui s’exécute toutes les quelques minutes. Dans cet exemple, elle s’exécute toutes les 5 minutes :
schtasks /create /tn "MonitorCriticalServices" /tr "powershell.exe -File C:\Scripts\MonitorServices.ps1" /sc minute /mo 5 /ru SYSTEM |
⚠️ Important : assurez-vous que l’exécution des scripts est autorisée.
Méthode 4 : consigner l’état de récupération des services dans le registre
Cette méthode crée une piste d’audit en inscrivant les événements de redémarrage dans le registre Windows, ce qui fournit un mécanisme de journalisation léger pour les audits ou la collecte par RMM.
Cas d’usage :
- Conserver localement une piste d’audit des actions de récupération
- Suivre les défaillances chroniques en vue d’une ACR (analyse des causes racines)
Prérequis : autorisations d’écriture dans le registre
Étapes :
- Exécutez ce script PowerShell :
New-Item -Path "HKLM:\SOFTWARE\Org\ServiceRecovery" -ForceSet-ItemProperty -Path "HKLM:\SOFTWARE\Org\ServiceRecovery" -Name "LastCheck" -Value (Get-Date).ToString("u")Set-ItemProperty -Path "HKLM:\SOFTWARE\Org\ServiceRecovery" -Name "LastRestarted" -Value $svc |
Ce script crée un nouveau chemin de registre avec des clés qui consignent l’heure de la dernière vérification et le redémarrage du service.
- Vérifiez les nouvelles entrées avec CMD (invite de commande) :
reg query HKLM\SOFTWARE\Org\ServiceRecovery
Méthode 5 : configurer les actions de récupération intégrées (facultatif)
Cette dernière méthode s’appuie sur les options de récupération intégrées à Windows pour redémarrer les services après un plantage.
Remarque : elle convient surtout aux plantages (services interrompus de façon inattendue), et non aux états bloqués (services figés ou ne répondant plus).
Cas d’usage :
- Redémarrer automatiquement des services comme BITS et W32Time après un plantage
- Uniformiser le comportement de récupération via GPO sur l’ensemble des terminaux
- Réduire les temps d’arrêt des services sujets à des défaillances intermittentes
Prérequis :
- Accès administrateur (pour sc.exe ou l’Éditeur du registre)
- Le service doit prendre en charge la récupération
Étapes :
- Configurez la récupération du service en ligne de commande :
sc failure "Spooler" reset= 86400 actions= restart/60000/restart/60000
Cet exemple de script met en place des actions de récupération automatiques pour Print Spooler. Le service redémarre après 1 minute lors des deux premiers plantages, mais aucune action n’est engagée en cas de troisième échec. Le compteur de défaillances se réinitialise au bout de 24 heures.
- Vous pouvez également modifier les propriétés du registre manuellement ou par script sous :
HKLM:\SYSTEM\CurrentControlSet\Services\<ServiceName>\FailureActions
Points de vigilance
| Risques | Conséquences possibles | Mesures correctives |
| Faux positifs générés par les scripts de surveillance |
|
|
| Perturbation de dépendances critiques | Les réactions en chaîne liées aux redémarrages peuvent perturber des services ou des applications interconnectés. |
|
| Exposition aux risques de sécurité liée à des scripts trop permissifs | Des attaquants pourraient exploiter les scripts pour obtenir des privilèges élevés. |
|
L’importance de la surveillance des services et de la récupération automatisée
Les services Windows constituent la colonne vertébrale de nombreuses fonctions système et applications. Lorsqu’ils échouent, se figent ou s’arrêtent sans prévenir, les utilisateurs peuvent se retrouver dans l’incapacité d’utiliser leur ordinateur, d’où une perte de temps, une baisse de performance et une hausse des demandes d’assistance. Une surveillance rigoureuse des services et une bonne capacité de récupération permettent de :
- Améliorer la disponibilité des terminaux et des serveurs : en évitant les interruptions, les serveurs restent en ligne et les utilisateurs productifs, ce qui compte particulièrement lorsque la disponibilité est critique.
- Réduire le nombre de tickets et le travail en mode réactif : la récupération automatisée corrige les défaillances de service courantes avant que les utilisateurs ne s’en aperçoivent, ce qui évite la création de demandes auprès du service d’assistance.
- Éviter les défaillances en cascade dues aux services dépendants : de nombreux services Windows ont besoin d’autres services pour fonctionner correctement. En redémarrant les services défaillants avant qu’ils n’affectent ceux qui en dépendent, vous stabilisez le système et empêchez la propagation du problème aux applications ou à l’ensemble du système.
- Garantir la santé des services conformément aux SLA (contrats de niveau de service) : pour les fournisseurs de services gérés, la disponibilité et la fiabilité des services sont directement liées aux SLA (contrats de niveau de service). Automatiser la récupération des services Windows critiques aide les MSP à respecter leurs engagements contractuels, à réduire les pénalités et à instaurer la confiance avec leurs clients.
Autres éléments à prendre en compte pour automatiser la surveillance et la récupération des services Windows
Voici quelques éléments qui mettent en lumière des bonnes pratiques à suivre et des écueils à anticiper avant de déployer ces stratégies d’automatisation dans des environnements de production.
Dépendances entre services
Redémarrer un service Windows sans tenir compte de ses dépendances peut rendre le système instable ou provoquer des défaillances en cascade. Validez toujours les dépendances d’un service avant de le redémarrer, à l’aide de scripts tels que :
Get-Service -Name X | Select-Object DependentServices
Redémarrez ensuite les services dépendants dans le bon ordre, si nécessaire.
Notifications et alertes
Les équipes informatiques doivent être informées des défaillances récurrentes, car des redémarrages et des récupérations silencieux peuvent masquer des problèmes de fond. Pour gagner en visibilité, configurez les scripts de façon à envoyer une alerte par e-mail, par webhook ou via le RMM chaque fois qu’un service est redémarré ou que son redémarrage échoue.
Services utilisant des identifiants dédiés
Certains services s’exécutent sous des comptes personnalisés : si le mot de passe expire ou est modifié sans mise à jour du service, les tentatives de redémarrage échoueront. Surveillez l’expiration des identifiants et appliquez des procédures rigoureuses de rotation des mots de passe. Testez les redémarrages automatisés de ces services pendant les fenêtres de maintenance.
Efficacité et fiabilité des scripts
Intégrer une logique de délai d’attente, des tentatives de reprise et une gestion des erreurs dans vos scripts est une bonne pratique pour éviter les blocages sur des services qui ne répondent plus. Vos scripts se terminent ainsi proprement et consignent les échecs.
Résolution des problèmes courants
Le service ne redémarre pas
Il est possible que le compte de service ne dispose pas des autorisations suffisantes, ou que le service dépende d’un autre service arrêté ou en mauvais état. Vérifiez le compte de service et l’état de son mot de passe, puis réinitialisez-le s’il a expiré. Vous pouvez également contrôler les dépendances avec cette commande :
Get-Service -Name X | Select-Object DependentServices
Le script ne s’exécute pas
La tâche planifiée ne s’exécute peut-être pas sous un compte disposant de privilèges suffisants. Vérifiez les identifiants et le contexte de la tâche planifiée (SYSTEM ou Administrateur). Le chemin d’accès au fichier ou l’emplacement du script peut aussi avoir changé : contrôlez que le chemin du script est toujours valide.
Le registre ne se met pas à jour
Le script n’a peut-être pas d’accès en écriture à HKLM, ou il s’exécute dans un contexte utilisateur limité à HKCU. Veillez à exécuter votre script en tant qu’Administrateur ou SYSTEM.
Service bloqué dans un état « Pending »
Un processus figé peut verrouiller le service au démarrage ou à l’arrêt. Des goulots d’étranglement de ressources (processeur, RAM ou E/S disque) peuvent aussi empêcher l’opération d’aboutir. Utilisez Get-CimInstance Win32_Service pour détecter les services figés en Start Pending ou Stop Pending, puis arrêtez manuellement les processus associés si cela ne présente aucun risque.
Fonctionnalités NinjaOne qui renforcent la surveillance des services Windows
Les outils évoqués ci-dessus sont tous de bons moyens de surveiller et de rétablir les services Windows sur des terminaux isolés. Pour les MSP et les équipes informatiques, il est toutefois toujours intéressant de s’appuyer sur des plateformes qui les aident à offrir de meilleurs services. Voici comment NinjaOne peut vous aider :
| Fonctionnalité NinjaOne | Description | Avantage pour les équipes informatiques et les MSP |
| Déploiement automatisé | Distribue les scripts de surveillance des services sur les terminaux, les clients ou les groupes |
|
| Remédiation automatisée | Redémarre automatiquement les services arrêtés ou en attente |
|
| Alertes et notifications | Génère des alertes lorsqu’un redémarrage est tenté, échoue ou se répète fréquemment |
|
| Étiquetage des terminaux | Signale les appareils présentant des défaillances de service chroniques pour analyse ultérieure |
|
| Journalisation pour l’audit et la conformité | Centralise dans des rapports les journaux issus du registre ou des scripts |
|
Étendre la récupération des services à l’ensemble des environnements
Lorsque des services Windows s’arrêtent ou se bloquent, le système peut ralentir, voire devenir instable. Une surveillance et une récupération automatisées aident donc les MSP à réduire les temps d’arrêt et à préserver la confiance de leurs clients.
De la vérification des services Windows en cours d’exécution avec PowerShell à la modification du registre pour l’audit, vous disposez de plusieurs moyens de mettre en place des mécanismes d’auto-réparation fiables qui limitent les interruptions. Gardez toujours à l’esprit les points de vigilance et les étapes de dépannage évoqués ici pour garantir des opérations proactives.
Sujets connexes :
- Guide complet : démarrer et arrêter un service Windows à distance sur plusieurs appareils
- Comment activer ou désactiver les services Windows
- Comment activer ou désactiver les services Windows (vidéo)
- Rétablir un service Windows hors service grâce à l’automatisation
- Bonnes pratiques de surveillance des performances des terminaux
Guide de démarrage rapide
NinjaOne offre de puissantes capacités d’automatisation qui vous permettent de :
- Créer des automatisations planifiées : vous pouvez mettre en place des scripts automatisés pour vérifier et redémarrer les services grâce à la bibliothèque d’automatisations de NinjaOne.
- Déployer des scripts en toute souplesse : la plateforme permet de créer des scripts personnalisés capables de :
- vérifier l’état d’un service
- redémarrer les services qui ne fonctionnent pas
- s’exécuter en tant que système, utilisateur courant ou avec des identifiants spécifiques
- Automatiser les actions : vous pouvez :
- planifier l’exécution de ces scripts à intervalles définis
- configurer des notifications en cas de défaillance d’un service
- définir des politiques pour traiter automatiquement les problèmes de service
