Script batch controllo servizi Windows e arresti
Uno script batch controllo servizi Windows può verificare periodicamente se i servizi fondamentali risultano attivi e scrivere in un file di log quelli arrestati o non disponibili. Il metodo usa sc.exe, uno strumento già incluso in Windows 10 e Windows 11, senza installare programmi aggiuntivi. Lo script considera anomalo ogni servizio configurato come necessario che non si trovi nello stato RUNNING. Il controllo può essere eseguito manualmente oppure automaticamente tramite Utilità di pianificazione. Il file di registro conserva data, ora, nome del servizio e tipo di errore rilevato. La procedura è adatta a workstation, PC aziendali e piccoli server Windows.
Cosa controlla lo script batch dei servizi Windows
Lo script verifica i servizi elencati nella variabile SERVIZI. Per ogni nome, il comando sc.exe query legge lo stato corrente e identifica il codice 4, che corrisponde a RUNNING. Qualsiasi altro stato, compresi STOPPED, STOP_PENDING o un servizio inesistente, viene registrato come problema.
I nomi da inserire sono i nomi di servizio, non necessariamente quelli visualizzati nell’app Servizi. Per esempio, il nome tecnico di “Registro eventi di Windows” è EventLog, mentre “Spooler di stampa” utilizza Spooler.
Il controllo proposto registra ogni rilevazione anomala. Se un servizio rimane fermo per più verifiche consecutive, lo stesso problema comparirà più volte nel file di log; questo comportamento è utile per capire da quanto tempo il servizio non è operativo.
- Non installa software esterni.
- Funziona con Windows 10 e Windows 11.
- Registra anche i servizi mancanti o non interrogabili.
- Può controllare servizi di sistema e applicazioni aziendali.
- Può essere avviato da Utilità di pianificazione.
Tra i servizi che spesso richiedono monitoraggio ci sono EventLog, Spooler, BITS, wuauserv e WinDefend. L’elenco non è universale: un servizio arrestato intenzionalmente, come Spooler su un computer senza stampanti, non deve essere considerato essenziale.
Come creare lo script batch controllo servizi Windows
Passo 1: preparare il file Batch
Apri Blocco note, incolla il codice seguente e sostituisci l’elenco nella variabile SERVIZI con i servizi realmente necessari al computer. Salva il file con estensione .bat, per esempio controllo-servizi.bat.
@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "LOG=%~dp0servizi.log"
set "SERVIZI=EventLog Spooler BITS wuauserv WinDefend"
if not exist "%LOG%" (
echo Registro del controllo servizi Windows > "%LOG%"
echo. >> "%LOG%"
)
for %%S in (%SERVIZI%) do (
set "CODICE="
for /f "tokens=3" %%A in ('sc.exe query "%%S" ^| findstr /R /C:"STATE"') do (
set "CODICE=%%A"
)
if not defined CODICE (
>>"%LOG%" echo [%date% %time:~0,8%] ERRORE: servizio %%S non trovato o non interrogabile
) else if not "!CODICE!"=="4" (
>>"%LOG%" echo [%date% %time:~0,8%] ARRESTO ANOMALO: servizio %%S, codice stato !CODICE!
)
)
endlocal
Il codice di stato viene letto come valore numerico, quindi il controllo non dipende dalla traduzione italiana dell’interfaccia di Windows. Il file servizi.log viene creato nella stessa cartella dello script.
Passo 2: trovare i nomi tecnici dei servizi
Premi Windows + R, digita services.msc e premi Invio. Fai doppio clic sul servizio interessato e individua il campo Nome servizio nella scheda Generale. Quel valore deve essere copiato nella variabile SERVIZI.
È possibile ottenere l’elenco dei servizi anche dal Prompt dei comandi:
sc.exe query state= all
Nel comando sc.exe, lo spazio dopo state= è necessario. Per cercare rapidamente un servizio specifico, puoi usare:
sc.exe query "Spooler"
Se il servizio è disattivato per scelta amministrativa, non inserirlo tra quelli da controllare come obbligatori. In caso contrario, lo script lo segnalerà a ogni esecuzione.
Passo 3: eseguire e verificare il log
Salva il file, fai clic con il tasto destro su controllo-servizi.bat e seleziona Esegui come amministratore. Per la sola lettura dello stato, sc.exe query normalmente non richiede privilegi elevati, ma l’esecuzione con un account amministrativo evita problemi di accesso in ambienti con criteri restrittivi.
Quando un servizio non è attivo, il registro contiene una riga simile a questa:
[12/08/2026 10:15:00] ARRESTO ANOMALO: servizio Spooler, codice stato 1
Il codice 1 indica normalmente lo stato STOPPED, mentre altri codici possono rappresentare una fase di avvio o arresto. Il registro non dimostra da solo la causa del problema: indica che il servizio non era nello stato operativo durante il controllo.
Come eseguire automaticamente il controllo con Utilità di pianificazione
Passo 1: creare un’attività pianificata
Apri il menu Start, cerca Utilità di pianificazione e avvia l’applicazione. Nel riquadro destro seleziona Crea attività, non Crea attività di base, così puoi impostare con precisione privilegi e condizioni di avvio.
Nella scheda Generale, assegna un nome come Controllo servizi essenziali. Attiva Esegui indipendentemente dalla connessione degli utenti e Esegui con i privilegi più elevati se il computer deve eseguire il controllo anche senza una sessione aperta.
Nella scheda Trigger, seleziona Nuovo e imposta l’avvio In base a una pianificazione. Per un controllo periodico, configura la ripetizione dell’attività ogni 5 o 10 minuti, in base all’importanza dei servizi monitorati.
Nella scheda Azioni, seleziona Nuova, scegli Avvio programma e indica il percorso completo del file .bat. Se il percorso contiene spazi, seleziona il file tramite Sfoglia invece di digitarlo manualmente.
Nella scheda Condizioni, disattiva eventuali limitazioni non necessarie, come l’avvio solo quando il computer è alimentato dalla rete elettrica. Infine, conferma con OK e verifica l’attività tramite Esegui nel riquadro destro.
Passo 2: usare il Prompt dei comandi per una pianificazione rapida
In alternativa, apri il Prompt dei comandi come amministratore e usa schtasks.exe. Sostituisci il percorso con quello reale del file:
schtasks /Create /TN "Controllo servizi essenziali" /TR ""C:Monitoraggiocontrollo-servizi.bat"" /SC MINUTE /MO 10 /RU SYSTEM
Questo comando crea un’attività eseguita dall’account SYSTEM ogni 10 minuti. Se il percorso del file contiene virgolette o caratteri particolari, è preferibile creare l’attività dall’interfaccia di Utilità di pianificazione per evitare errori di interpretazione.
Come distinguere un arresto anomalo da un arresto intenzionale
Lo script rileva lo stato presente al momento dell’esecuzione, ma non stabilisce se l’arresto sia stato causato da un errore, da un aggiornamento o da un’azione dell’amministratore. Un controllo eseguito ogni 10 minuti può inoltre non rilevare un arresto durato meno dell’intervallo di pianificazione.
Per ricostruire l’evento, apri Visualizzatore eventi, vai in Registri di Windows > Sistema e filtra il registro per la sorgente Service Control Manager. Gli eventi 7031 e 7034 possono indicare terminazioni inattese, mentre l’evento 7036 registra cambiamenti di stato dei servizi.
Il file servizi.log è quindi utile per la sorveglianza periodica, mentre il registro di sistema di Windows fornisce informazioni aggiuntive sull’orario e sulle circostanze dell’arresto. Se il log cresce rapidamente, spostalo in una cartella con permessi controllati e imposta una rotazione periodica dei file.
Per monitorare un servizio applicativo, aggiungi il relativo nome tecnico nella variabile SERVIZI; il formato resta invariato e non richiede modifiche alla logica del controllo.
Uno script batch controllo servizi Windows offre un monitoraggio semplice, automatico e verificabile direttamente dai file di log.
Potrebbe interessarti anche:
- Spooler di stampa bloccato Windows 11: script CMD
- Windows Update bloccato allo 0 Windows 11: script PowerShell
- Link esterni WordPress JavaScript: sicurezza e nuova scheda
- Video YouTube WordPress: caricamento JavaScript
FAQ
Sì. Il codice utilizza sc.exe, incluso sia in Windows 10 sia in Windows 11. Il percorso dei menu di Utilità di pianificazione può variare leggermente tra le versioni.
Devi usare il nome tecnico indicato nelle proprietà del servizio in services.msc. Per esempio, il nome tecnico di Spooler di stampa è Spooler.
Lo script considera anomalo ogni servizio dell’elenco che non è nello stato RUNNING. Rimuovi dall’elenco i servizi che devono rimanere arrestati o che vengono avviati solo quando necessario.
No. Lo script registra il problema senza modificare lo stato del servizio. Un riavvio automatico richiede comandi aggiuntivi e deve essere valutato con cautela.
No. Il file registra lo stato rilevato dallo script, mentre il Visualizzatore eventi può mostrare la causa e gli eventi generati da Service Control Manager.
Altri articoli di questa serie:
- Script batch riparazione file sistema Windows 10/11
- Script BAT per pulire i file temporanei di Windows
- Script batch reset rete Windows: ripristino completo
- Script CMD per riparare Windows Update
- Script batch rapporto diagnostico Windows: tutorial
- Script BAT backup automatico Robocopy Windows
- Script CMD per archiviare file vecchi su Windows
- Script batch: organizza i file per estensione
- Script BAT per controllare lo spazio disco in Windows
