È possibile gestire i servizi di Windows non solo dallo snap-in services.msc o dallo strumento a riga di comando sc.exe, ma anche usando PowerShell. In questo articolo considereremo diversi scenari di gestione dei servizi di Windows con PowerShell.
PowerShell Cmdlets usati per gestire i servizi di Windows
Ci sono otto cmdlets di base per visualizzare lo stato dei servizi di Windows e gestirli. Per ottenere l’elenco completo delle cmdlets di gestione dei servizi, esegui questo comando:
Get-Help \*-Service
- Get-Service – permette di ottenere i servizi su un computer locale o remoto sia in esecuzione che fermati;
- New-Service – crea un servizio. Il cmdlet crea una nuova voce per un servizio Windows nel registro e nel database dei servizi;
- Restart-Service – riavvia un servizio. Il cmdlet invia il messaggio di riavvio attraverso il Windows Service Controller;
- Resume-Service – riprende un servizio. Il cmdlet invia un messaggio di ripresa al Windows Service Manager;
- Set-Service – cambia le impostazioni di un servizio locale o remoto, incluso il suo stato, la descrizione, il nome visualizzato o la modalità di avvio. Puoi anche usare questo cmdlet per avviare, fermare o sospendere un servizio;
- Start-Service – avvia un servizio;
- Stop-Service – ferma un servizio (il cmdlet invia un messaggio di arresto a Windows Service Manager);
- Suspend-Service – sospende un servizio. Un servizio sospeso è ancora in esecuzione, ma non fa nulla finché non viene ripreso usando (per esempio, con il cmdlet Resume-Service).
Puoi ottenere una descrizione dettagliata ed esempi di utilizzo di un particolare cmdlet con Get-Help:
Get-Help Start-Service
Come controllare lo stato dei servizi Windows con Get-Service?
Puoi ottenere l’elenco dei servizi e il loro stato (In esecuzione/Stop) su un computer locale o remoto usando il cmdlet Get-Service. Il parametro -Name permette di selezionare i servizi per nome. Il nome del servizio può essere specificato usando il carattere jolly *
.
Se non conosci il nome esatto del servizio, puoi trovarlo tramite il suo nome visualizzato usando il parametro -DisplayName. Puoi usare l’elenco dei valori e i caratteri jolly.
Usa il cmdlet Get-Service con il parametro -ComputerName per ottenere lo stato del servizio su un computer remoto. Puoi interrogare lo stato del servizio su più computer remoti contemporaneamente specificando i loro nomi separati da virgole. Per esempio, il comando mostrato sotto ottiene lo stato del servizio Spooler sui computer remoti ny-prnt1 e ny-prnt2.
Get-Service spooler –ComputerName ny-prnt1,ny-prnt2
Status Name DisplayName------ ---- -----------Running spooler Print SpoolerStopped spooler Print Spooler
Per visualizzare tutte le proprietà di un servizio, usa la cmdlet Select-Object:
Get-Service spooler | Select-Object *
La cmdlet Select-Object permette di ottenere proprietà specifiche di un servizio. Per esempio, si desidera visualizzare il nome, lo stato e le opzioni disponibili del servizio Spooler:
Get-Service Spooler | Select DisplayName,Status,ServiceName,Can*
Il cmdlet Get-Service ha due parametri che permettono di visualizzare le dipendenze del servizio:
- -DependentServices permette di visualizzare i servizi dipendenti dal servizio dato
- -RequiredServices visualizza i servizi da cui dipende il servizio dato
Il seguente comando visualizza i servizi richiesti per avviare il servizio Spooler:
Get-Service –Name Spooler -RequiredServices
Il seguente comando mostra i servizi che dipendono da Spooler:
Get-Service –Name Spooler -DependentServices