Sono disponibili otto cmdlet principali di tipo Service, progettati per una vasta gamma di attività di servizio. In questo manuale verrà illustrato solo come visualizzare l'elenco dei servizi e come modificarne lo stato di esecuzione. Per visualizzare un elenco completo dei cmdlet di tipo Service, utilizzare Get-Help *-Service; per visualizzare informazioni su ciascun cmdlet di questo tipo, digitare Get-Help <nome-cmdlet>, ad esempio Get-Help New-Service.

Recupero di servizi

È possibile ottenere i servizi in un computer locale o remoto tramite il cmdlet Get-Service. Come per Get-Process, se si utilizza il comando Get-Service senza parametri vengono restituiti tutti i servizi. È possibile filtrare i servizi in base al nome e persino utilizzare 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é il nome effettivo del servizio non è sempre ovvio, potrebbe essere necessario cercare i servizi in base al nome visualizzato. A tale scopo, è possibile utilizzare un nome specifico, i caratteri jolly o 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

È possibile utilizzare il parametro ComputerName del cmdlet Get-Service per ottenere i servizi in computer remoti. Il parametro ComputerName accetta più valori e caratteri jolly, pertanto è possibile ottenere i servizi in più computer con un singolo comando. Con il comando seguente, ad esempio, si ottengono i servizi del computer remoto Server01.

Get-Service -ComputerName Server01

Recupero di servizi richiesti e dipendenti

Il cmdlet Get-Service dispone di due parametri molto utili per l'amministrazione dei servizi. Con il parametro DependentServices vengono ottenuti i servizi che dipendono dal servizio. Con il parametro RequiredServices vengono ottenuti i servizi da cui dipende questo servizio.

Questi parametri consentono di visualizzare solo i valori delle proprietà DependentServices e ServicesDependedOn (alias=RequiredServices) dell'oggetto System.ServiceProcess.ServiceController restituito da Get-Service, ma semplificano i comandi e il recupero di queste informazioni.

Con il comando seguente vengono ottenuti i servizi richiesti dal 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

Con il comando seguente vengono ottenuti i servizi che richiedono il 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...

È inoltre possibile ottenere tutti i servizi con dipendenze. Con il comando seguente si ottiene tale risultato, quindi viene utilizzato il cmdlet Format-Table per visualizzare le proprietà Status, Name, RequiredServices e DependentServices dei servizi nel computer.

Get-Service -Name * | where {$_.RequiredServices -or $_.DependentServices} | Format-Table -Property Status, Name, RequiredServices, DependentServices -auto

Arresto, avvio, sospensione e riavvio di servizi

Tutti i cmdlet di tipo Service hanno lo stesso formato generale. È possibile specificare i servizi in base al nome comune o al nome visualizzato, nonché accettare come valori elenchi e caratteri jolly. Per arrestare lo spooler di stampa, utilizzare:

Stop-Service -Name spooler

Per avviare lo spooler di stampa dopo averlo arrestato, utilizzare:

Start-Service -Name spooler

Per sospendere lo spooler di stampa, utilizzare:

Suspend-Service -Name spooler

Benché il funzionamento del cmdlet Restart-Service sia simile a quello di altri cmdlet di tipo Service, vengono illustrati alcuni esempi più complessi. Nella forma più semplice di questo cmdlet è sufficiente specificare il nome 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 vengono restituiti due messaggi di avviso relativi all'avvio dello spooler di stampa. Quando si esegue un'operazione di servizio che richiede tempo, Windows PowerShell informa l'utente che sta ancora tentando di eseguire l'attività.

Se si desidera riavviare più servizi, è possibile visualizzare un elenco di servizi, filtrarli, 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 : Cannot 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...

I cmdlet di tipo Service non dispongono di un parametro ComputerName, ma possono essere eseguiti in un computer remoto tramite il cmdlet Invoke-Command. Con il comando seguente, ad esempio, viene riavviato il servizio Spooler nel computer remoto Server01.

Invoke-Command -ComputerName Server01 {Restart-Service Spooler}

Impostazione delle proprietà Service

Con il cmdlet Set-Service vengono modificate le proprietà di un servizio in un computer locale o remoto. Poiché lo stato del servizio è una proprietà, è possibile utilizzare questo cmdlet per avviare, arrestare e sospendere un servizio. Il cmdlet Set-Service dispone inoltre di un parametro StartupType che consente di modificare il tipo di avvio del servizio.

Per utilizzare Set-Service in Windows Vista e nelle versioni successive di Windows, aprire Windows PowerShell con l'opzione "Esegui come amministratore".

Per ulteriori informazioni, vedere Set-Service.

Vedere anche




Argomenti della Guida