Come gestire i servizi di Windows tramite la riga di comando

Cerco sempre modi efficienti per gestire i compiti di sistema senza lasciare il terminale, anche quando utilizzo Windows. Su Windows, i servizi girano in background per mantenere il sistema e le app funzionanti senza intoppi. Invece di aprire il Gestore dei Servizi, preferisco gestire i servizi di Windows tramite la riga di comando. In questa guida, esploreremo questi metodi e vedremo come puoi gestire i servizi di Windows direttamente dal terminale.
1. Gestire i servizi di Windows con sc.exe
sc.exe è uno strumento della riga di comando integrato per gestire i servizi di Windows. Ti consente di configurare, interrogare e controllare i servizi direttamente dal terminale. Con sc.exe, ottieni il pieno controllo sui servizi di Windows senza bisogno del Gestore dei Servizi grafico.
Controllare lo stato del servizio con sc
Possiamo usare il comando sc query serviceName per controllare lo stato di un servizio specifico. Ad esempio, eseguiamo il comando sc query MySQL80 per recuperare dettagli sul servizio MySQL80, incluso il suo stato:

Attualmente, MySQL non è in esecuzione sulla nostra macchina.
Avviare un servizio con sc
Per avviare un servizio specifico utilizzando sc.exe, possiamo usare il comando sc start ServiceName. Ad esempio, eseguiamo sc start MySQL80 per avviare il servizio MySQL80. Per verificare se il servizio è stato avviato con successo, possiamo controllare il suo stato usando il comando sc query MySQL80:

Fermare un servizio con sc
Puoi fermare un servizio per liberare risorse di sistema. Ad esempio, il comando sc stop MySQL80 ferma MySQL, il che può essere verificato usando il comando sc query MySQL80:

Creare un nuovo servizio con sc
Possiamo creare un nuovo servizio usando il comando sc create. Questo richiede di specificare il nome del servizio, il percorso eseguibile e il tipo di avvio. Ad esempio, per creare un nuovo servizio chiamato “mte” che si avvierà automaticamente all’avvio, digita:
sc create mte binPath="C:\Users\HP\Desktop\Examples\Service.exe" start= autoAggiornare un servizio con sc
Possiamo usare il comando sc config per configurare un servizio esistente. Ad esempio, per cambiare il tipo di avvio in manuale, esegui il comando:
sc config serviceName start= demandEliminare un servizio con sc
Quando un servizio non è più necessario, possiamo rimuoverlo permanentemente da Windows usando il comando:
sc delete serviceName2. Gestire i servizi di Windows con il comando Net
Il comando net in Windows ci consente di gestire i servizi dalla riga di comando. Permette agli utenti di avviare, fermare, mettere in pausa, riprendere e interrogare i servizi senza utilizzare il Gestore dei Servizi grafico.
Avviare e fermare un servizio con il comando net
Possiamo avviare o fermare i servizi di Windows con i comandi net start serviceName e net stop serviceName, rispettivamente:

Mettere in pausa e riprendere i servizi con il comando net
Alcuni servizi di Windows supportano la pausa e la ripresa invece di una fermata completa. In questo caso, possiamo usare i comandi net pause ServiceName e net continue ServiceName, rispettivamente:

Controllare lo stato del servizio con il comando net
Il comando net stesso non fornisce un modo diretto per controllare lo stato di un servizio specifico, ma possiamo usarlo insieme al comando findstr per filtrare i risultati. Ad esempio, per controllare se il servizio specificato è in esecuzione, digita:
net start | findstr "ServiceName"Se il servizio specificato è in esecuzione, il comando restituisce il suo nome; altrimenti, non c’è output.
Gestire i servizi da remoto con il comando net
Possiamo usare il comando net per gestire i servizi su computer remoti specificando il nome del computer. Ad esempio, i comandi net start ServiceName /S RemotePC e net stop ServiceName /S RemotePC vengono utilizzati per avviare o fermare servizi su un computer remoto.
3. Gestire i servizi di Windows con i cmdlet di PowerShell
PowerShell offre un controllo più avanzato sui servizi di Windows con cmdlet integrati come Get-Service, Start-Service, Stop-Service e Restart-Service. Questi cmdlet consentono agli utenti di controllare lo stato di un servizio, avviarlo o fermarlo e persino riavviarlo quando necessario.
I cmdlet di PowerShell forniscono output dettagliati, incluso lo stato del servizio, il nome visualizzato e i servizi dipendenti. Questi cmdlet consentono scripting e automazione, rendendolo utile per gestire più servizi in modo efficiente.
La flessibilità e le potenti funzionalità di PowerShell lo rendono lo strumento preferito per gli amministratori che gestiscono i servizi di Windows.
Ottenere lo stato del servizio con i cmdlet
Possiamo usare il cmdlet Get-Service -Name ServiceName per ottenere dettagli sul servizio specificato. Ad esempio, il seguente comando restituisce lo stato del servizio MySQL80, mostrando se è in esecuzione o fermo:
Get-Service -Name MySQL80
Interrogare i servizi con i cmdlet di PowerShell
Possiamo usare il comando Get-Service per interrogare i servizi in base a criteri specifici. Ad esempio, possiamo recuperare tutti i servizi attualmente in esecuzione usando il comando:
Get-Service | Where-Object { $_.Status -eq 'Running' }
Avviare e fermare i servizi con i cmdlet di PowerShell
Possiamo avviare o fermare un servizio specifico usando i cmdlet Start-Service e Stop-Service, rispettivamente. Ad esempio, usiamo i comandi di PowerShell per avviare, fermare e controllare lo stato del servizio MySQL80:
Start-Service -Name MySQL80
Stop-Service -Name MySQL80
Get-Service -Name MySQL80
Cambiare il tipo di avvio del servizio con i cmdlet di PowerShell
I cmdlet di PowerShell ci consentono di aggiornare il tipo di avvio del servizio. Ad esempio, possiamo eseguire i seguenti cmdlet per configurare un servizio per avviarsi automaticamente con il sistema, richiedere un avvio manuale o essere disabilitato, rispettivamente:
Set-Service -Name ServiceName -StartupType Automatic
Set-Service -Name ServiceName -StartupType Manual
Set-Service -Name ServiceName -StartupType DisabledQuesti cmdlet aiutano gli amministratori a gestire il comportamento del servizio in modo efficiente, assicurando che i servizi essenziali si avviino secondo necessità, mentre si impedisce l’esecuzione di quelli non necessari.
Gestire servizi remoti con i cmdlet
PowerShell consente anche di gestire i servizi su computer remoti specificando i nomi dei computer remoti. Ad esempio, il comando Get-Service -Name ServiceName -ComputerName RemotePC recupera lo stato di un servizio specifico in esecuzione su un computer remoto chiamato RemotePC, consentendo agli amministratori di monitorare i servizi da remoto.
Allo stesso modo, il comando Restart-Service -Name ServiceName -ComputerName RemotePC tenta di riavviare il servizio specificato su un computer remoto. Assicura che il servizio venga riavviato senza richiedere accesso diretto alla macchina. Tuttavia, la gestione remota dei servizi richiede le autorizzazioni appropriate e che PowerShell remoting sia abilitato.
4. Automatizzare i compiti di gestione dei servizi
Gli script di PowerShell consentono di automatizzare la gestione dei servizi, rendendo più facile monitorare e controllare i servizi di Windows senza intervento manuale. Possiamo creare uno script che controlla continuamente lo stato di un servizio specifico e lo riavvia se si ferma inaspettatamente.
Ad esempio, il seguente script controlla se il servizio MySQL80 è in esecuzione e lo riavvia se è fermo:
$serviceName = "MySQL80"
$service = Get-Service -Name $serviceName
if ($service.Status -ne "Running") {
Restart-Service -Name $serviceName -Force
Write-Output "$serviceName è stato fermato ed è stato riavviato."
} else {
Write-Output "$serviceName è già in esecuzione."
}Per impostazione predefinita, Windows limita l’esecuzione degli script. Per abilitare l’esecuzione, esegui prima il comando:
Set-ExecutionPolicy RemoteSignedOra naviga nella posizione dello script ed esegui il comando .\serviceScript.ps1 per eseguire lo script:
Gestire i servizi di Windows dalla riga di comando ti dà pieno controllo senza fare affidamento sul Gestore dei Servizi grafico. Sia che tu utilizzi sc.exe, net o cmdlet di PowerShell, ciascun metodo offre modi efficienti per avviare, fermare e configurare i servizi.
Le capacità di scripting di PowerShell rendono l’automazione facile, permettendoti di monitorare e gestire i servizi senza soluzione di continuità. Padroneggiando questi strumenti, puoi risolvere problemi, ottimizzare le prestazioni del sistema e garantire che i servizi critici funzionino senza intoppi.
Per ulteriori modi per ottimizzare il tuo sistema Windows e risolvere problemi comuni, dai un’occhiata a queste guide su come risolvere problemi di Windows e ottimizzare il tuo PC per migliori prestazioni.