Punti chiave
- Individua i servizi da monitorare: crea un array PowerShell con i servizi Windows critici (ad esempio Spooler di stampa, Client DNS, Ora di Windows) per concentrare il monitoraggio sui servizi che incidono davvero sull’uptime.
- Rileva i servizi non in esecuzione o bloccati con PowerShell: usa Get-Service e query WMI su Win32_Service per individuare i servizi arrestati o bloccati negli stati “Start Pending”/“Stop Pending”.
- Pianifica il monitoraggio dei servizi con l’Utilità di pianificazione: automatizza i controlli ricorrenti con schtasks, così gli script vengono eseguiti ogni pochi minuti senza interventi manuali.
- Registra lo stato di ripristino dei servizi nel registro di sistema: scrivi timestamp e risultati dei riavvii nel Registro di sistema di Windows per creare una traccia di controllo leggera, utile per la conformità e il reporting RMM.
- Configura le azioni di ripristino integrate: usa sc failure o l’Editor del Registro di sistema per riavviare automaticamente i servizi dopo un arresto anomalo, soluzione ideale per i crash più che per gli stati bloccati.
I servizi Windows sono programmi che eseguono processi in background all’avvio del sistema. Garantiscono la continuità operativa, ma se uno o più servizi restano bloccati in stato “In avvio” o “In arresto”, o addirittura si arrestano in modo imprevisto, il sistema può rallentare o smettere di funzionare. È qui che l’automazione diventa preziosa, perché evita agli utenti finali lunghe attese per il supporto IT.
Continua a leggere per scoprire i vari metodi per monitorare i servizi Windows in modo automatico e riavviarli quando si bloccano: dagli script PowerShell e CMD all’Utilità di pianificazione e al registro di sistema.
Preferisci una guida visiva? Guarda il nostro video: Come monitorare e riavviare automaticamente i servizi Windows bloccati.
Scopri quali condizioni e programmi monitorare sugli endpoint, quando inviare un alert e quali azioni intraprendere
⬇️ Scarica il Playbook NinjaOne su monitoraggio e sistema di alert degli endpoint per MSP
Metodi per monitorare e riavviare i servizi Windows bloccati
Monitoraggio proattivo, ripristino automatizzato e logging affidabile sono fondamentali per mantenere attivi i servizi Windows critici. Scopri i metodi qui sotto per avere sempre un approccio strutturato al monitoraggio e al riavvio dei servizi essenziali.
Prerequisiti:
- Windows 10/11 (per le workstation)
- Windows Server 2016 o versioni successive (per i server)
- PowerShell 5.1 o versioni successive
- Privilegi di amministratore locale
Suggerimento: leggi Aspetti a cui prestare attenzione prima di procedere.
Strategie di distribuzione consigliate:
| Clicca per scegliere un metodo | Ideale per singoli utenti | Ideale per le aziende enterprise |
| Metodo 1: individua i servizi da monitorare | ✓ | ✓ |
| Metodo 2: rileva i servizi non in esecuzione o bloccati con PowerShell | ✓ | ✓ |
| Metodo 3: pianifica un’attività di monitoraggio dei servizi | ✓ | ✓ |
| Metodo 4: registra lo stato di ripristino dei servizi nel registro di sistema | ✓ | |
| Metodo 5: configura le azioni di ripristino integrate (facoltativo) | ✓ |
Metodo 1: individua i servizi da monitorare
Questo passaggio definisce l’elenco dei servizi Windows critici per il funzionamento del sistema che richiedono monitoraggio. Concentrandoti solo sui servizi essenziali, eviti di sprecare risorse.
📌 Casi d’uso:
- Creare l’elenco dei servizi critici su tutti gli endpoint
- Monitorare i servizi delle applicazioni line-of-business
- Definire una baseline per le policy di automazione enterprise
Passaggi:
- Stabilisci quali servizi Windows sono essenziali per il tuo ambiente. Ad esempio:
- Spooler di stampa per la stampa
- Client DNS per la risoluzione dei nomi di rete
- Ora di Windows per la sincronizzazione del dominio
- Definiscili in un array PowerShell:
| $servicesToMonitor = @( “Spooler”, # Print Spooler “W32Time”, # Windows Time “Dnscache”, # DNS Client “WinRM”, # Windows Remote Management “BITS” # Background Intelligent Transfer Service) |
- Facoltativo: salva questi nomi in un file JSON o CSV, così potrai aggiornarli senza modificare lo script.
Metodo 2: rileva i servizi non in esecuzione o bloccati con PowerShell
Questo metodo usa PowerShell per verificare lo stato di salute dei servizi, riavviare quelli non in esecuzione e individuare quelli bloccati in stati di transizione.
Casi d’uso:
- Riavviare automaticamente il Client DNS per risolvere gli errori di risoluzione dei nomi
- Ripristinare lo Spooler di stampa per riattivare i servizi di stampa
- Rilevare gli stati “Start Pending”
Prerequisiti:
- Autorizzazioni per l’esecuzione di script PowerShell
- Accesso a WMI
Passaggi:
- Esegui questo 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: $_” } }} |
Lo script elenca i servizi Windows tramite PowerShell e ne rileva lo stato attuale. Se individua un servizio non in esecuzione, prova ad avviarlo. Infine registra un messaggio di esito positivo o negativo.
- Esegui questo script WMI in PowerShell:
| $stuck = Get-CimInstance -Class Win32_Service | Where-Object { $_.State -in @(“Start Pending”, “Stop Pending”) } |
Questo comando usa WMI per interrogare tutti i servizi Windows e filtra quelli in stato pending, ovvero “Start Pending” o “Stop Pending”. I servizi individuati vengono salvati nella variabile $stuck, così puoi esaminarli o intervenire in un secondo momento, ad esempio con un arresto forzato, un riavvio o un alert.
Metodo 3: pianifica un’attività di monitoraggio dei servizi
Questo metodo automatizza l’esecuzione dello script a intervalli prestabiliti tramite l’Utilità di pianificazione di Windows, eliminando la necessità di avviarlo manualmente. In questo modo i servizi vengono controllati di continuo.
Casi d’uso:
- Eseguire controlli ogni pochi minuti sui server critici
- Automatizzare l’autoriparazione sugli endpoint privi di RMM
- Garantire la disponibilità dei servizi fuori orario e nei fine settimana
Prerequisiti:
- Accesso all’Utilità di pianificazione
- Contesto SYSTEM o account di servizio
Passaggi:
- Crea e salva lo script di monitoraggio in una posizione nota. Ad esempio, crea “MonitorServices.ps1” e salvalo in C:\Scripts\.
- Con PowerShell, crea un’attività pianificata che venga eseguita ogni pochi minuti. In questo esempio viene eseguita ogni 5 minuti:
schtasks /create /tn “MonitorCriticalServices” /tr "powershell.exe -File C:\Scripts\MonitorServices.ps1" /sc minute /mo 5 /ru SYSTEM |
⚠️ Importante: assicurati che l’esecuzione degli script sia consentita.
Metodo 4: registra lo stato di ripristino dei servizi nel registro di sistema
Questo metodo crea una traccia di controllo scrivendo gli eventi di riavvio nel Registro di sistema di Windows, offrendo un meccanismo di logging leggero per audit o raccolta dati tramite RMM.
Casi d’uso:
- Mantenere una traccia di controllo locale delle azioni di ripristino
- Monitorare i guasti ricorrenti per l’analisi delle cause profonde (RCA)
Prerequisito: autorizzazioni di scrittura sul registro di sistema
Passaggi:
- Esegui questo 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 |
In questo modo viene creato un nuovo percorso nel registro di sistema con chiavi che registrano l’ora dell’ultimo controllo e il riavvio del servizio.
- Verifica le nuove voci con CMD:
reg query HKLM\SOFTWARE\Org\ServiceRecovery
Metodo 5: configura le azioni di ripristino integrate (facoltativo)
Quest’ultimo metodo sfrutta le opzioni di ripristino integrate in Windows per riavviare i servizi dopo un arresto anomalo.
Nota: è la soluzione migliore per i crash (servizi terminati in modo imprevisto), non per gli stati bloccati (servizi bloccati o che non rispondono).
Casi d’uso:
- Riavviare automaticamente servizi come BITS e W32Time dopo un crash
- Standardizzare il comportamento di ripristino tramite GPO su tutti gli endpoint
- Ridurre al minimo i tempi di inattività per i servizi soggetti a guasti intermittenti
Prerequisiti:
- Accesso come amministratore (per sc.exe o l’Editor del Registro di sistema)
- Il servizio deve supportare il ripristino
Passaggi:
- Configura il ripristino del servizio da riga di comando:
sc failure “Spooler” reset= 86400 actions= restart/60000/restart/60000
Questo script di esempio imposta le azioni di ripristino automatico per lo Spooler di stampa. Il servizio viene riavviato dopo 1 minuto per i primi due crash, ma al terzo non viene eseguita alcuna azione di ripristino. Dopo 24 ore il contatore dei guasti si azzera.
- In alternativa, modifica le proprietà del registro di sistema manualmente o tramite script in:
HKLM:\SYSTEM\CurrentControlSet\Services\<ServiceName>\FailureActions
Aspetti a cui prestare attenzione
| Rischi | Possibili conseguenze | Come rimediare |
| Falsi positivi generati dagli script di monitoraggio |
|
|
| Interruzione di dipendenze critiche | I riavvii a catena possono compromettere servizi o applicazioni interconnessi. |
|
| Esposizione a rischi di sicurezza dovuta a script con privilegi eccessivi | Gli attaccanti potrebbero sfruttare gli script per ottenere un controllo con privilegi elevati. |
|
Perché il monitoraggio dei servizi e il ripristino automatizzato sono importanti
I servizi Windows sono la struttura portante di molte funzioni di sistema e applicazioni. Quando si guastano, si bloccano o si arrestano in modo imprevisto, gli utenti possono trovarsi impossibilitati a usare il computer, con conseguente perdita di tempo, calo delle prestazioni e aumento delle richieste di supporto. Monitorare correttamente i servizi e intervenire sui problemi consente di:
- Aumentare la disponibilità di endpoint e server: prevenendo le interruzioni, i server restano online e gli utenti continuano a lavorare, soprattutto quando l’uptime è critico.
- Ridurre i ticket di supporto e il lavoro reattivo: il ripristino automatizzato risolve i guasti più comuni prima ancora che gli utenti se ne accorgano, evitando l’apertura di richieste all’help desk.
- Evitare guasti a catena dovuti ai servizi dipendenti: molti servizi Windows dipendono da altri servizi per funzionare correttamente. Riavviare i servizi in difficoltà prima che compromettano quelli che ne dipendono stabilizza il sistema ed evita che il problema si propaghi alle applicazioni o all’intero sistema.
- Garantire livelli di servizio coperti da SLA: per gli MSP, l’uptime e l’affidabilità dei servizi sono legati direttamente agli Service Level Agreement (SLA). Automatizzare il ripristino dei servizi Windows critici aiuta gli MSP a rispettare gli obblighi contrattuali, ridurre le penali e consolidare la fiducia dei clienti.
Altri aspetti da valutare nell’automazione del monitoraggio e del ripristino dei servizi Windows
Ecco alcune considerazioni che evidenziano le best practice da seguire e i potenziali ostacoli da affrontare prima di applicare queste strategie di automazione negli ambienti di produzione.
Dipendenze tra servizi
Riavviare un servizio Windows senza tenere conto delle sue dipendenze può causare instabilità del sistema o guasti a catena. Verifica sempre le dipendenze prima del riavvio con script come:
Get-Service -Name X | Select-Object DependentServices
Poi, se necessario, riavvia i servizi dipendenti nell’ordine corretto.
Notifiche e alert
Il personale IT deve essere informato dei guasti ricorrenti, perché riavvii e ripristini silenziosi possono mascherare problemi di fondo. Per garantire visibilità, conviene configurare gli script in modo che inviino alert via email, webhook o RMM ogni volta che un servizio viene riavviato o che il riavvio non riesce.
Servizi con credenziali dedicate
Alcuni servizi vengono eseguiti con account personalizzati: se la password scade o viene modificata senza aggiornare il servizio, i tentativi di riavvio falliranno. Tieni sotto controllo la scadenza delle credenziali e mantieni procedure adeguate di rotazione delle password. Testa i riavvii automatizzati su questi servizi durante le finestre di manutenzione.
Efficienza e affidabilità degli script
È buona pratica includere nei tuoi script logiche di timeout, tentativi ripetuti e gestione degli errori, per evitare blocchi sui servizi che non rispondono. In questo modo gli script terminano in modo corretto e registrano i guasti.
Risoluzione dei problemi più comuni
Il servizio non si riavvia
Potrebbe essere che l’account del servizio non disponga di autorizzazioni sufficienti, oppure che il servizio dipenda da un altro servizio arrestato o non funzionante. Verifica l’account del servizio e lo stato della sua password, quindi reimpostala se è scaduta. Puoi anche controllare le dipendenze con questo comando:
Get-Service -Name X | Select-Object DependentServices
Lo script non viene eseguito
L’attività pianificata potrebbe essere eseguita con un account privo di privilegi sufficienti. Verifica le credenziali e il contesto dell’attività pianificata (SYSTEM o Amministratore). Anche il percorso del file o la posizione dello script potrebbero essere cambiati: controlla che il percorso sia ancora corretto.
Il registro di sistema non viene aggiornato
Lo script potrebbe non avere accesso in scrittura a HKLM oppure essere eseguito in un contesto utente con accesso solo a HKCU. Assicurati di eseguirlo come Amministratore o SYSTEM.
Servizio bloccato in stato “Pending”
Un processo bloccato potrebbe tenere occupato il servizio durante l’avvio o l’arresto. Anche i colli di bottiglia nelle risorse (CPU, RAM o I/O del disco) possono impedire il completamento dell’operazione. Usa Get-CimInstance Win32_Service per rilevare i servizi bloccati in Start Pending o Stop Pending, quindi termina manualmente i processi associati se è sicuro farlo.
Funzionalità NinjaOne che migliorano il monitoraggio dei servizi Windows
Gli strumenti descritti sopra sono tutte valide soluzioni per monitorare e ripristinare i servizi Windows sui singoli endpoint. Per MSP e team IT, però, è sempre vantaggioso affidarsi a piattaforme che permettono di offrire servizi migliori. Ecco come NinjaOne può aiutarti:
| Funzionalità NinjaOne | Descrizione | Vantaggio per team IT e MSP |
| Distribuzione automatizzata | Distribuisce gli script di watchdog dei servizi su endpoint, tenant o gruppi |
|
| Remediation automatizzata | Riavvia automaticamente i servizi non attivi o in stato pending |
|
| Alert e notifiche | Genera alert quando vengono tentati riavvii, quando falliscono o quando si ripetono spesso |
|
| Tagging degli endpoint | Contrassegna i dispositivi con guasti ricorrenti dei servizi per un’analisi successiva |
|
| Logging per audit e conformità | Centralizza in report i log basati sul registro di sistema o sugli script |
|
Metti alla prova il monitoraggio in tempo reale, gli alert e l’automazione dei flussi di lavoro nel tuo ambiente
Come estendere il ripristino dei servizi a tutti gli ambienti
Quando i servizi Windows si arrestano o si bloccano, il sistema può rallentare o diventare instabile. Monitoraggio e ripristino automatizzati aiutano quindi gli MSP a ridurre i tempi di inattività e a mantenere la fiducia dei clienti.
Dal controllo dei servizi Windows in esecuzione con PowerShell alla modifica del registro di sistema per l’auditing, hai a disposizione diversi modi per costruire meccanismi di autoriparazione affidabili che riducono al minimo le interruzioni. Ricorda sempre le considerazioni e i passaggi di risoluzione dei problemi illustrati, per garantire operazioni davvero proattive.
Argomenti correlati:
- Guida completa: come avviare e arrestare un servizio Windows da remoto su più dispositivi
- Come abilitare o disabilitare i servizi Windows
- Come abilitare o disabilitare i servizi Windows (video)
- Come risolvere il problema di un servizio Windows non attivo con l’automazione
- Best practice per il monitoraggio delle prestazioni degli endpoint
Guida rapida
NinjaOne offre potenti funzionalità di automazione che ti permettono di:
- Creare automazioni pianificate: puoi configurare script automatizzati per controllare e riavviare i servizi tramite la Libreria di automazioni di NinjaOne.
- Distribuire script in modo flessibile: la piattaforma consente di creare script personalizzati in grado di:
- Controllare lo stato dei servizi
- Riavviare i servizi se non sono in esecuzione
- Essere eseguiti come sistema, come utente corrente o con credenziali specifiche
- Impostare azioni automatizzate: puoi:
- Pianificare l’esecuzione di questi script a intervalli specifici
- Configurare notifiche in caso di guasto dei servizi
- Definire policy per gestire automaticamente i problemi dei servizi
