Há oito cmdlets Service fundamentais, projetados para uma grande variedade de tarefas de serviço. Examinaremos somente a listagem e a alteração do estado de execução dos serviços, mas você pode obter uma lista dos cmdlets Service usando Get-Help *-Service e pode obter informações sobre cada um deles usando Get-Help <Nome-do-Cmdlet>, como Get-Help New-Service.

Obtendo serviços

Você pode obter os serviços em um computador local ou remoto usando o cmdlet Get-Service. Assim como acontece com Get-Process, o uso de Get-Service sem parâmetros retornará todos os serviços. Você pode filtrá-los por nome, mesmo se utilizar um asterisco como caractere curinga:

PS> Get-Service -Name se*
Status   Name               DisplayName
------   ----               -----------
Running  seclogon           Secondary Logon
Running  SENS               System Event Notification
Stopped  ServiceLayer       ServiceLayer

Como o nome real do serviço nem sempre é óbvio, talvez você precise encontrar serviços pelo nome de exibição. Você pode fazer isso através de um nome específico, usando curingas ou uma lista de nomes de exibição:

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

Você pode usar o parâmetro ComputerName de Get-Service para especificar um computador remoto. O parâmetro ComputerName aceita diversos valores e caracteres curinga; assim, você pode obter os serviços em vários computadores com um único comando. Por exemplo, o comando a seguir obtém os serviços no computador remoto Server01.

Get-Service -ComputerName Server01

Obtendo serviços obrigatórios e dependentes

O cmdlet Get-Service tem dois parâmetros que são muito úteis na administração de serviços. O parâmetro DependentServices obtém os serviços que dependem do serviço. O parâmetro RequiredServices obtém os serviços dos quais esse serviço depende.

Esses parâmetros apenas exibem os valores das propriedades DependentServices e ServicesDependedOn (alias=RequiredServices) do objeto System.ServiceProcess.ServiceController retornado por Get-Service, mas simplificam os comandos e tornam a obtenção dessas informações muito mais simples.

O comando a seguir obtém os serviços necessários ao serviço 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

O comando a seguir obtém os serviços necessários ao serviço 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...

Você pode obter até mesmo todos os serviços dependentes. O comando a seguir faz apenas isso e, em seguida, usa o cmdlet Format-Table para exibir as propriedades Status, Name, RequiredServices e DependentServices dos serviços no computador.

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

Parando, iniciando, suspendendo e reiniciando serviços

Todos os cmdlets Service têm o mesmo formato geral. Os serviços podem ser especificados por nome comum ou nome de exibição e usam listas e curingas como valores. Para parar o spooler de impressão, use:

Stop-Service -Name spooler

Para iniciar o spooler de impressão depois de parado, use:

Start-Service -Name spooler

Para suspender o spooler de impressão, use:

Suspend-Service -Name spooler

O cmdlet Restart-Service funciona da mesma maneira que os outros cmdlets Service, mas mostraremos alguns de seus exemplos mais complexos. Na utilização mais simples, você especifica o nome do serviço:

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>

Você observará que a mensagem de aviso sobre a inicialização do Spooler de Impressão é exibida repetidamente. Quando uma operação de serviço que leva algum tempo é executada, o Windows PowerShell notificará você de que ainda está tentando executá-la.

Caso você queira reiniciar vários serviços, pode obter uma lista deles, filtrá-los e então executar a reinicialização:

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

Esses cmdlets Service não têm um parâmetro ComputerName, mas você pode executá-los em um computador remoto usando o cmdlet Invoke-Command. Por exemplo, o comando a seguir reinicia o serviço Spooler no computador remoto Server01.

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

Definindo propriedades de serviço

O cmdlet Set-Service altera as propriedades de um serviço em um computador local ou remoto. Como o status de serviço é uma propriedade, você pode usar esse cmdlet para iniciar, interromper e suspender um serviço. O cmdlet Set-Service também tem um parâmetro StartupType que permite alterar o tipo de inicialização de serviço.

Para usar Set-Service no Windows Vista e em versões mais recentes do Windows, abra o Windows PowerShell com a opção "Executar como administrador".

Para obter mais informações, consulte Set-Service

See Also




Sumário