Come gestire i servizi di Windows tramite la riga di comando

Servizi di Windows

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:

controllare lo stato del servizio con sc

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:

Avvia servizio Sc

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:

Ferma servizio Sc

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= auto

Aggiornare 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= demand

Eliminare un servizio con sc

Quando un servizio non è più necessario, possiamo rimuoverlo permanentemente da Windows usando il comando:

sc delete serviceName

2. 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:

Avvia o ferma servizio con il comando net

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:

Mettere in pausa e riprendere servizio comando net

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

Controlla stato del servizio Ottieni servizio

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' }

Interrogare servizi specifici

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

Avvia Ferma Servizio PowerShell

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 Disabled

Questi 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 RemoteSigned

Ora 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.