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:

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:

PDF Strumenti PDF gratis Nel browser, senza upload Apri gli strumenti