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