Hay ocho cmdlets Service principales, diseñados para una amplia variedad de tareas relacionadas con servicios. Explicaremos únicamente cómo se enumeran y cambian los estados de ejecución de servicios, pero puede obtener una lista de los cmdlets Service usando Get-Help *-Service y también puede obtener información acerca de cada cmdlet Service usando Get-Help <nombreDeCmdlet>, por ejemplo, Get-Help New-Service.

Obtener los servicios

Puede obtener los servicios en un equipo local o remoto utilizando el cmdlet Get-Service. Al igual que sucede con Get-Process, el uso del comando Get-Service sin parámetros devuelve todos los servicios. Puede filtrarlos por nombre e incluso utilizar un asterisco como carácter comodín:

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

Dado que no siempre es evidente cuál es el nombre real del servicio, puede encontrarse con que necesita buscar los servicios por el nombre para mostrar. Puede hacerlo por un nombre específico, con caracteres comodín o utilizando una lista de nombres para mostrar:

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

Puede utilizar el parámetro ComputerName del cmdlet Get-Service para obtener los servicios en equipos remotos. El parámetro ComputerName acepta varios valores y caracteres comodín, por lo que puede obtener los servicios en varios equipos con un solo comando. Por ejemplo, el comando siguiente obtiene los servicios en el equipo remoto Server01.

Get-Service -ComputerName Server01

Obtener los servicios requeridos y dependientes

El cmdlet Get-Service tiene dos parámetros que son muy útiles en la administración de servicios. El parámetro DependentServices obtiene los servicios que dependen del servicio. El parámetro RequiredServices obtiene los servicios de los que depende este servicio.

Estos parámetros muestran sólo los valores de las propiedades DependentServices y ServicesDependedOn (alias = RequiredServices) del objeto System.ServiceProcess.ServiceController que Get-Service devuelve, pero simplifican los comandos y facilitan en gran medida la obtención de esta información.

El comando siguiente obtiene los servicios que el servicio LanmanWorkstation requiere.

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

El comando siguiente obtiene los servicios que requieren el servicio 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...

Puede incluso obtener todos los servicios que tienen dependencias. El comando siguiente sólo realiza esta acción y, a continuación, utiliza el cmdlet Format-Table para mostrar las propiedades Status, Name, RequiredServices y DependentServices de los servicios en el equipo.

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

Detener, iniciar, suspender y reiniciar servicios

Los cmdlets Service tienen todos el mismo formato general. Puede especificar los servicios por el nombre común o por el nombre para mostrar, así como usar listas y caracteres comodín como valores. Para detener la cola de impresión, utilice:

Stop-Service -Name spooler

Para iniciar la cola de impresión después de haberla detenido, utilice:

Start-Service -Name spooler

Para suspender la cola de impresión, utilice:

Suspend-Service -Name spooler

El cmdlet Restart-Service funciona de la misma manera que los demás cmdlets Service, pero mostraremos algunos ejemplos más complejos de este cmdlet. Con el uso más sencillo, puede especificar el nombre del servicio:

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>

Observará que aparece varias veces un mensaje de advertencia relativo al inicio de la cola de impresión. Si realiza una operación de servicio que tarda cierto tiempo en completarse, Windows PowerShell le informará de que todavía está intentando realizar la tarea.

Si desea reiniciar varios servicios, puede obtener una lista de los servicios, filtrarlos y, a continuación, efectuar el reinicio:

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

Estos cmdlets Service no tienen un parámetro ComputerName, pero puede ejecutarlos en un equipo remoto utilizando el cmdlet Invoke-Command. Por ejemplo, el comando siguiente reinicia el servicio Spooler en el equipo remoto Server01.

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

Establecer las propiedades de servicios

El cmdlet Set-Service cambia las propiedades de un servicio en un equipo local o remoto. Dado que el estado de servicio es una propiedad, puede utilizar este cmdlet para iniciar, detener y suspender un servicio. El cmdlet Set-Service también tiene un parámetro StartupType que permite cambiar el tipo de inicio de servicio.

Para utilizar Set-Service en Windows Vista y versiones posteriores de Windows, abra Windows PowerShell con la opción "Ejecutar como administrador".

Para obtener más información, vea Set-Service.

Vea también




Tabla de contenido