Script cmd controllo servizi Windows: rapporto
Lo script cmd controllo servizi Windows proposto in questo articolo analizza i servizi installati, individua quelli con stato STOPPED oppure configurati come DISABLED e salva i risultati in un file di testo. Il rapporto include il nome del servizio, lo stato corrente e il tipo di avvio impostato in Windows. La procedura utilizza esclusivamente strumenti già presenti nel sistema operativo, in particolare sc.exe, quindi non richiede software aggiuntivo. Lo script è in sola lettura: non riavvia, arresta o modifica alcun servizio. Il file generato può essere allegato a una richiesta di supporto tecnico o usato per una diagnosi locale.
Cosa controlla lo script CMD dei servizi Windows
Il comando sc.exe query elenca i servizi presenti nel sistema e restituisce lo stato corrente, come RUNNING per un servizio in esecuzione o STOPPED per un servizio arrestato. Il comando sc.exe qc mostra invece la configurazione del servizio, compreso il tipo di avvio.
Lo script considera problematici due casi distinti:
- Servizio arrestato: lo stato corrente è
STOPPED. - Servizio disattivato: il tipo di avvio è
DISABLED. - Servizio arrestato e disattivato: il servizio soddisfa entrambe le condizioni e viene comunque riportato una sola volta.
Un servizio disattivato può risultare arrestato, ma la configurazione DISABLED è importante anche quando il servizio è momentaneamente in esecuzione. In quel caso Windows non potrà avviarlo normalmente all’avvio o su richiesta di altri componenti finché il tipo di avvio non viene modificato.
Il rapporto viene salvato nella stessa cartella del file .cmd con il nome rapporto_servizi_windows.txt. Ogni esecuzione sovrascrive il rapporto precedente, così il file contiene sempre l’ultima rilevazione.
Come creare lo script cmd controllo servizi Windows
Passo 1: creare il file CMD
Apri Blocco note, incolla il codice seguente e salva il file con un nome come controllo_servizi_windows.cmd. Nella finestra di salvataggio seleziona Tutti i file come tipo e verifica che l’estensione finale sia .cmd, non .cmd.txt.
@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "REPORT=%~dp0rapporto_servizi_windows.txt"
set /a FOUND=0
(
echo Rapporto diagnostico servizi Windows
echo Generato il: %date% %time%
echo Computer: %COMPUTERNAME%
echo.
echo Servizi arrestati o disattivati:
echo.
) > "%REPORT%"
echo Controllo dei servizi Windows in corso...
echo Rapporto: "%REPORT%"
echo.
for /f "tokens=2" %%A in ('sc.exe query type^= service state^= all ^| findstr /B /C:"SERVICE_NAME:"') do (
call :CHECK_SERVICE "%%A"
)
if !FOUND! EQU 0 (
echo Nessun servizio arrestato o disattivato rilevato.>> "%REPORT%"
echo Nessun servizio arrestato o disattivato rilevato.
) else (
echo.>> "%REPORT%"
echo Totale elementi segnalati: !FOUND!>> "%REPORT%"
echo.
echo Elementi segnalati: !FOUND!
)
echo.
echo Operazione terminata.
pause
exit /b
:CHECK_SERVICE
set "SVC=%~1"
set "STATE="
set "START_TYPE="
for /f "tokens=3" %%A in ('sc.exe query "!SVC!" ^| findstr /C:"STATE"') do (
set "STATE=%%A"
)
for /f "tokens=3" %%A in ('sc.exe qc "!SVC!" ^| findstr /C:"START_TYPE"') do (
set "START_TYPE=%%A"
)
if /I "!STATE!"=="STOPPED" set /a FOUND+=1
if /I "!START_TYPE!"=="DISABLED" if /I not "!STATE!"=="STOPPED" set /a FOUND+=1
if /I "!STATE!"=="STOPPED" (
>> "%REPORT%" echo Servizio: !SVC! ^| Stato: !STATE! ^| Avvio: !START_TYPE!
echo [SEGNALATO] !SVC! - Stato: !STATE! - Avvio: !START_TYPE!
) else if /I "!START_TYPE!"=="DISABLED" (
>> "%REPORT%" echo Servizio: !SVC! ^| Stato: !STATE! ^| Avvio: !START_TYPE!
echo [SEGNALATO] !SVC! - Stato: !STATE! - Avvio: !START_TYPE!
)
exit /b
La variabile %~dp0 identifica la cartella in cui si trova lo script. Questa scelta evita di dipendere dal percorso corrente del Prompt dei comandi e mantiene il rapporto accanto al file .cmd.
Passo 2: eseguire il controllo
Fai doppio clic su controllo_servizi_windows.cmd per avviare l’analisi. In alternativa, apri il Prompt dei comandi, raggiungi la cartella dello script e avvialo da lì.
Per ottenere informazioni più affidabili sui servizi protetti, è preferibile eseguire il file con autorizzazioni amministrative:
- Fai clic con il tasto destro sul file
.cmd. - Seleziona Mostra altre opzioni in Windows 11, se presente.
- Scegli Esegui come amministratore.
- Conferma la richiesta di Controllo dell’account utente.
La lettura dell’elenco dei servizi normalmente funziona anche senza privilegi elevati, ma alcuni servizi o dettagli possono essere meno accessibili in base alle autorizzazioni dell’account e alla configurazione di Windows.
Passo 3: aprire il rapporto diagnostico
Al termine dell’esecuzione, apri il file rapporto_servizi_windows.txt nella stessa cartella dello script. Ogni riga segnalata contiene tre informazioni:
Servizio: wuauserv | Stato: STOPPED | Avvio: DEMAND_START
STOPPED indica che il servizio è arrestato in quel momento. DISABLED identifica un servizio disattivato nella configurazione di avvio. Valori come AUTO_START e DEMAND_START indicano rispettivamente l’avvio automatico e l’avvio manuale su richiesta.
Come interpretare i risultati senza modificare i servizi
Un servizio arrestato non è necessariamente guasto. Molti servizi Windows utilizzano DEMAND_START, cioè l’avvio manuale, e restano fermi finché una funzione o un’applicazione non ne richiede l’utilizzo. Il rapporto segnala lo stato, ma non stabilisce da solo che sia necessario intervenire.
Un servizio disattivato richiede maggiore attenzione, soprattutto se il suo nome è associato a Windows Update, sicurezza, rete, audio, stampa o accesso remoto. Prima di riattivarlo è opportuno verificare la funzione collegata e il motivo per cui è stato disabilitato. Alcune ottimizzazioni non ufficiali e alcuni software di gestione della privacy modificano proprio il tipo di avvio.
Per esaminare manualmente un servizio puoi usare la console grafica:
Verifica dalla console Servizi
Premi Windows + R, digita services.msc e conferma con Invio. Cerca il nome del servizio indicato nel rapporto, quindi apri le proprietà con un doppio clic. La finestra mostra Stato del servizio e Tipo di avvio, ma non modificare questi valori senza sapere quale componente dipende dal servizio.
Puoi anche interrogare un singolo servizio dal Prompt dei comandi:
sc.exe query "NomeServizio" sc.exe qc "NomeServizio"
Sostituisci NomeServizio con il nome tecnico riportato dal rapporto, non con il nome descrittivo visualizzato nella console. Il nome tecnico è quello utilizzato da Windows nei comandi sc.exe.
Limiti e personalizzazioni del rapporto
Lo script analizza i servizi Windows registrati nel computer, ma non verifica se un arresto sia corretto, temporaneo o causato da un errore. Per una diagnosi più approfondita è necessario consultare anche il Visualizzatore eventi, i log dell’applicazione interessata e le dipendenze del servizio.
Il file di rapporto viene sovrascritto a ogni avvio. Per conservare più rilevazioni puoi cambiare il nome del file nella riga seguente:
set "REPORT=%~dp0rapporto_servizi_windows.txt"
Per esempio, puoi sostituirla con un percorso fisso:
set "REPORT=C:Temprapporto_servizi_windows.txt"
La cartella C:Temp deve esistere prima dell’esecuzione; in caso contrario il reindirizzamento del testo potrebbe non produrre il file previsto. Lo script non usa sc.exe stop, sc.exe start o comandi di configurazione, quindi la sua esecuzione non cambia lo stato dei servizi.
Il codice presuppone l’output standard inglese di sc.exe, con etichette come SERVICE_NAME, STATE e START_TYPE. Nelle installazioni Windows in cui tali etichette risultano localizzate, il filtraggio con findstr potrebbe non individuare tutti i servizi; questo comportamento dipende dall’edizione e dalla localizzazione del sistema e non va stimato senza una verifica diretta.
Un rapporto diagnostico generato dallo script cmd controllo servizi Windows è un punto di partenza utile, non una prova automatica di malfunzionamento.
Potrebbe interessarti anche:
- Windows Update bloccato allo 0 Windows 11: script PowerShell
- Spooler di stampa bloccato Windows 11: script CMD
- Servizio Windows Installer non avviato: come ripristinarlo
- Reimpostare proxy WinHTTP Windows 11 con netsh
FAQ
No. Lo script esegue solo operazioni di lettura tramite sc.exe e salva i risultati in un file di testo.
I servizi con avvio manuale, indicato come DEMAND_START, possono restare arrestati finché Windows o un’applicazione non ne richiede l’utilizzo.
Il file rapporto_servizi_windows.txt viene creato nella stessa cartella in cui si trova il file .cmd.
Non sempre, perché l’elenco dei servizi è spesso leggibile da un account standard. L’esecuzione come amministratore può però consentire l’accesso a maggiori dettagli su alcuni servizi protetti.
DISABLED significa che il servizio è configurato come disattivato e non può essere avviato normalmente da Windows finché il tipo di avvio non viene cambiato.
Altri articoli di questa serie:
- Script batch ripristino rete Windows: DNS e TCP/IP
- Script CMD per pulire Windows Update e riavviare i servizi
- Script batch riparazione file sistema Windows: tutorial
- Script CMD backup cartelle Windows con Robocopy
- Script batch pulizia file temporanei Windows: guida sicura
- Script batch controllo spazio disco Windows: avvisi
- Script CMD: trova i file più grandi in Windows
- Script batch controllo disco CHKDSK: salva il report
- Script CMD: punto di ripristino Windows in un clic
