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:

Pubblicità

  • 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:

Altro per te

PHP
PHP Compatibility Checker
Controlla il tuo plugin WordPress prima di aggiornare PHP Verifica la compatibilità con PHP 8.0–8.5 Scopri eventuali problemi nel codice PHP Analizza il tuo plugin WordPress online Preparati a PHP 8.5
Verifica ora →
PDF Strumenti PDF gratis Nel browser, senza upload Apri gli strumenti

🔒

Contenuto riservato

Per scaricare questo file devi prima registrarti oppure accedere con il tuo account.

XWhatsAppTelegram