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