Búsqueda de sitios web

PowerShell: cómo utilizar Get-Service para comprobar el estado del servicio


Puede utilizar el cmdlet Get-Service en PowerShell para obtener todos los servicios en una computadora, incluidos los servicios en ejecución y detenidos.

A menudo, es posible que desee utilizar el cmdlet Get-Service para comprobar el estado de un servicio en particular e iniciar un servicio en particular si no se está ejecutando actualmente.

Puede utilizar los siguientes métodos para hacerlo:

Método 1: verificar el estado de un servicio específico

(Get-Service -Name ScDeviceEnum).Status

Este ejemplo en particular devolverá el estado del servicio específico denominado ScDeviceEnum.

Por ejemplo, esto puede devolver "En ejecución", "Detenido", "Pausado", etc.

Método 2: iniciar un servicio específico si no se está ejecutando actualmente

$ServiceName = 'ScDeviceEnum'
$ServiceDetails = Get-Service -Name $ServiceName

if ($ServiceDetails.Status -ne 'Running') {
Write-Host 'Service is Stopped'
Start-Service -Name $ServiceName -verbose
$ServiceDetails.Refresh()
Write-Host 'Service is' $ServiceDetails.Status
}
Write-Host 'Operation complete'

Este ejemplo en particular intentará iniciar el servicio denominado ScDeviceEnum si no se está ejecutando actualmente.

El siguiente ejemplo muestra cómo utilizar estos métodos en la práctica.

Ejemplo: cómo utilizar Get-Service para comprobar el estado del servicio

Supongamos que nos gustaría comprobar si el servicio llamado ScDeviceEnum se está ejecutando actualmente en nuestra computadora.

Podemos utilizar la siguiente sintaxis para hacerlo:

(Get-Service -Name ScDeviceEnum).Status

La siguiente captura de pantalla muestra cómo utilizar esta sintaxis en la práctica:

Esto devuelve Detenido, lo que nos indica que este servicio en particular no se está ejecutando actualmente.

Podemos utilizar el siguiente script para intentar iniciar este servicio si no se está ejecutando actualmente:

$ServiceName = 'ScDeviceEnum'
$ServiceDetails = Get-Service -Name $ServiceName

if ($ServiceDetails.Status -ne 'Running') {
Write-Host 'Service is Stopped'
Start-Service -Name $ServiceName -verbose
$ServiceDetails.Refresh()
Write-Host 'Service is' $ServiceDetails.Status
}
Write-Host 'Operation complete'

Si el servicio está actualmente detenido, este script devolverá El servicio está detenido.

Luego intentará iniciar el servicio y luego mostrará los resultados de si pudimos iniciar el servicio con éxito o no.

Si hay un error al intentar iniciar el servicio, aparecerá el mensaje de error.

Por último, el script mostrará Operación completa para indicar que el script ha finalizado.

Nota: Puede encontrar la documentación completa para el cmdlet Get-Service en PowerShell aquí.

Artículos relacionados