/
/

Comment surveiller et redémarrer automatiquement les services Windows bloqués

par Team Ninja
How to Monitor and Restart Stuck Windows Services Automatically blog banner image

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éthodeIdéal pour les particuliersIdé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 :

  1. 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
  2. Déclarez-les dans un tableau PowerShell :
$servicesToMonitor = @(
"Spooler", # Print Spooler
"W32Time", # Horloge Windows
"Dnscache", # Client DNS
"WinRM", # Gestion à distance de Windows
"BITS" # Service de transfert intelligent en arrière-plan)
  1. 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 :

  1. Exécutez ce script PowerShell :
foreach ($svc in $servicesToMonitor) {
$service = Get-Service -Name $svc -ErrorAction SilentlyContinue
if ($service.Status -ne "Running") {
try {
Start-Service -Name $svc -ErrorAction Stop
Write-Output "$svc restarted successfully."
} catch {
Write-Output "Failed to start $svc. Error: $_"
}
}}

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.

  1. 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 :

  1. 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\.
  2. 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 :

  1. Exécutez ce script PowerShell :
New-Item -Path "HKLM:\SOFTWARE\Org\ServiceRecovery" -Force
Set-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.

  1. 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 :

  1. 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.

  1. Vous pouvez également modifier les propriétés du registre manuellement ou par script sous :

HKLM:\SYSTEM\CurrentControlSet\Services\<ServiceName>\FailureActions

Points de vigilance

RisquesConséquences possiblesMesures correctives
Faux positifs générés par les scripts de surveillance
  • Redémarrages inutiles
  • Interruption de service
  • Impact sur les utilisateurs
  • Dégradation des performances
  • Ajoutez des contrôles de validation, par exemple en confirmant deux fois l’état du service avant tout redémarrage.
  • Testez d’abord les scripts dans des environnements hors production.
Perturbation de dépendances critiquesLes réactions en chaîne liées aux redémarrages peuvent perturber des services ou des applications interconnectés.
  • Établissez une cartographie des dépendances.
  • En cas de perturbation, redémarrez les services dépendants dans le bon ordre ou revenez au dernier état stable connu.
Exposition aux risques de sécurité liée à des scripts trop permissifsDes attaquants pourraient exploiter les scripts pour obtenir des privilèges élevés.
  • Limitez les autorisations des scripts.
  • Utilisez la signature de code.
  • Appliquez le principe du moindre privilège.
  • En cas d’exploitation, révoquez immédiatement les identifiants compromis.

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é NinjaOneDescriptionAvantage 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
  • Gain de temps
  • Cohérence assurée sur plusieurs clients
Remédiation automatiséeRedémarre automatiquement les services arrêtés ou en attente
  • Réduction des temps d’arrêt
  • Impact évité pour les utilisateurs avant l’escalade des problèmes
Alertes et notificationsGénère des alertes lorsqu’un redémarrage est tenté, échoue ou se répète fréquemment
  • Meilleure visibilité
  • Escalade plus rapide en cas d’échec de l’automatisation
Étiquetage des terminauxSignale les appareils présentant des défaillances de service chroniques pour analyse ultérieure
  • Aide à identifier les problèmes récurrents
  • Facilite une ACR (analyse des causes racines) proactive
Journalisation pour l’audit et la conformitéCentralise dans des rapports les journaux issus du registre ou des scripts
  • Démonstration du respect des SLA (contrats de niveau de service)
  • Analyses d’incidents simplifiées

É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 de démarrage rapide

NinjaOne offre de puissantes capacités d’automatisation qui vous permettent de :

  1. 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.
  2. 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
  3. 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

FAQs

Des défaillances répétées révèlent généralement un problème plus profond, comme une configuration corrompue ou des autorisations manquantes. Dans ce cas, interrompez les redémarrages automatisés, examinez les autorisations du compte de service et consultez le journal d’événements pour identifier la cause exacte de l’échec.

Automatisez le déploiement des scripts avec un logiciel RMM afin de diffuser les scripts de surveillance sur tous les terminaux gérés en une seule opération, plutôt que de les déployer et de les maintenir appareil par appareil. Cela centralise également les alertes en cas de défaillance d’un service, au lieu d’obliger les administrateurs informatiques à consulter les journaux locaux.

La plupart des services quittent l’état « Démarrage » ou « Arrêt » en quelques secondes. S’il reste bloqué plusieurs minutes sans aucune évolution, c’est qu’il est déjà figé.

Oui. PowerShell et le Planificateur de tâches fonctionnent localement sur n’importe quel appareil Windows. Seules les configurations de stratégie de groupe gérées par le domaine nécessitent une jonction au domaine.

You might also like

Prêt à simplifier les aspects les plus complexes de l'informatique et de la sécurité ?