Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo esempio si applica solo a Windows PowerShell 5.1.
Sono disponibili otto cmdlet di base del servizio , progettati per un'ampia gamma di attività del servizio. Questo articolo esamina solo come elencare e modificare lo stato di attività dei servizi. È possibile ottenere un elenco di cmdlet del servizio usando Get-Command *-Service
. È possibile trovare informazioni su ogni cmdlet usando Get-Help <Cmdlet-Name>
, ad esempio Get-Help New-Service
.
Recupero di servizi
È possibile ottenere i servizi in un computer locale o remoto usando il Get-Service
cmdlet . Come per Get-Process
, l'uso del Get-Service
comando senza parametri restituisce tutti i servizi. È possibile filtrare in base al nome, anche usando un asterisco come carattere jolly:
PS> Get-Service -Name se*
Status Name DisplayName
------ ---- -----------
Running seclogon Secondary Logon
Running SENS System Event Notification
Stopped ServiceLayer ServiceLayer
Poiché non è sempre evidente il nome reale del servizio, potrebbe essere necessario trovare i servizi in base al nome visualizzato. È possibile cercare in base a un nome specifico, usare caratteri jolly o specificare un elenco di nomi visualizzati:
PS> Get-Service -DisplayName se*
Status Name DisplayName
------ ---- -----------
Running lanmanserver Server
Running SamSs Security Accounts Manager
Running seclogon Secondary Logon
Stopped ServiceLayer ServiceLayer
Running wscsvc Security Center
PS> Get-Service -DisplayName ServiceLayer, Server
Status Name DisplayName
------ ---- -----------
Running lanmanserver Server
Stopped ServiceLayer ServiceLayer
Recupero di servizi remoti
Con Windows PowerShell è possibile usare il parametro ComputerName del Get-Service
cmdlet per ottenere i servizi nei computer remoti. Il parametro ComputerName accetta più valori e caratteri jolly, quindi è possibile ottenere i servizi in più computer con un singolo comando. Ad esempio, il comando seguente ottiene i servizi nel computer remoto Server01.
Get-Service -ComputerName Server01
A partire da PowerShell 6.0, i *-Service
cmdlet non hanno il parametro ComputerName . È comunque possibile accedere ai servizi nei computer remoti tramite l'utilizzo del remoting di PowerShell. Ad esempio, il comando seguente ottiene i servizi nel computer remoto Server02.
Invoke-Command -ComputerName Server02 -ScriptBlock { Get-Service }
È anche possibile gestire i servizi con gli altri *-Service
cmdlet. Per altre informazioni sulla comunicazione remota di PowerShell, vedere about_Remote.
Ottenimento dei servizi necessari e dipendenti
Il cmdlet Get-Service ha due parametri molto utili per l'amministrazione del servizio. Il parametro DependentServices ottiene i servizi che dipendono dal servizio.
Il parametro RequiredServices ottiene i servizi da cui dipende il servizio LanmanWorkstation.
PS> Get-Service -Name LanmanWorkstation -RequiredServices
Status Name DisplayName
------ ---- -----------
Running MRxSmb20 SMB 2.0 MiniRedirector
Running bowser Bowser
Running MRxSmb10 SMB 1.x MiniRedirector
Running NSI Network Store Interface Service
Il parametro DependentServices recupera i servizi che dipendono dal servizio LanmanWorkstation.
PS> Get-Service -Name LanmanWorkstation -DependentServices
Status Name DisplayName
------ ---- -----------
Running SessionEnv Terminal Services Configuration
Running Netlogon Netlogon
Stopped Browser Computer Browser
Running BITS Background Intelligent Transfer Ser...
Il comando seguente ottiene tutti i servizi con dipendenze. Cmdlet Format-Table
per visualizzare le proprietà Status, Name, RequiredServices e DependentServices dei servizi.
Get-Service -Name * | Where-Object {$_.RequiredServices -or $_.DependentServices} |
Format-Table -Property Status, Name, RequiredServices, DependentServices -Auto
Arresto, avvio, sospensione e riavvio dei servizi
Tutti i cmdlet del servizio hanno lo stesso formato generale. I servizi possono essere specificati in base al nome comune o al nome visualizzato e accettano elenchi e caratteri jolly come valori. Per arrestare lo spooler di stampa, usare:
Stop-Service -Name spooler
Per avviare lo spooler di stampa dopo che è stato arrestato, usare:
Start-Service -Name spooler
Per sospendere lo spooler di stampa, utilizzare:
Suspend-Service -Name spooler
Il Restart-Service
cmdlet funziona nello stesso modo degli altri cmdlet del servizio:
PS> Restart-Service -Name spooler
WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...
WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...
PS>
Si noti che viene visualizzato un messaggio di avviso ripetuto sull'avvio dello Spooler di stampa. Quando si esegue un'operazione del servizio che richiede tempo, PowerShell invia una notifica che sta ancora tentando di eseguire l'attività.
Se si desidera riavviare più servizi, è possibile ottenere un elenco di servizi, filtrarli e quindi eseguire il riavvio:
PS> Get-Service | Where-Object -FilterScript {$_.CanStop} | Restart-Service
WARNING: Waiting for service 'Computer Browser (Browser)' to finish stopping...
WARNING: Waiting for service 'Computer Browser (Browser)' to finish stopping...
Restart-Service : can't stop service 'Logical Disk Manager (dmserver)' because
it has dependent services. It can only be stopped if the Force flag is set.
At line:1 char:57
+ Get-Service | Where-Object -FilterScript {$_.CanStop} | Restart-Service <<<<
WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...
WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...
Questi cmdlet del servizio non hanno un parametro ComputerName , ma è possibile eseguirli in un computer remoto usando il Invoke-Command
cmdlet . Ad esempio, il comando seguente riavvia il servizio Spooler nel computer remoto Server01.
Invoke-Command -ComputerName Server01 {Restart-Service Spooler}
Impostazione delle proprietà del servizio
Il Set-Service
cmdlet modifica le proprietà di un servizio in un computer locale o remoto. Poiché lo stato del servizio è una proprietà, è possibile usare questo cmdlet per avviare, arrestare e sospendere un servizio.
Il cmdlet Set-Service include anche un parametro StartupType che consente di modificare il tipo di avvio del servizio.
Per usare Set-Service
in Windows Vista e versioni successive di Windows, aprire PowerShell con l'opzione Esegui come amministratore.
Per altre informazioni, vedere Set-Service