Saltar al contenido

Script de Powershell para verificar si el servicio se inició, si no, inícielo

Sé libre de compartir nuestros tutoriales y códigos en tus redes, necesitamos tu ayuda para hacer crecer esta comunidad.

Solución:

Creo que puede haber complicado demasiado su código: si solo está verificando si un servicio se está ejecutando y, si no, ejecútelo y luego deje de volver a evaluar, lo siguiente debería ser suficiente:

Buen punto en la actualización.

$ServiceName = 'Serenade'
$arrService = Get-Service -Name $ServiceName

while ($arrService.Status -ne 'Running')


    Start-Service $ServiceName
    write-host $arrService.status
    write-host 'Service starting'
    Start-Sleep -seconds 60
    $arrService.Refresh()
    if ($arrService.Status -eq 'Running')
    
        Write-Host 'Service is now Running'
    


Dado $arrService = Get-Service -Name $ServiceName, $arrService.Status es un static propiedad, correspondiente al valor en el momento de la convocatoria. Usar $arrService.Refresh() cuando sea necesario para renovar las propiedades a los valores actuales.

MSDN ~ ServiceController.Actualizar()

Actualiza los valores de propiedad restableciendo las propiedades a sus valores actuales.

La combinación de las soluciones de Alaa Akoum y Nick Eagle me permitió recorrer una serie de servicios de Windows y detenerlos si se estaban ejecutando.

# stop the following Windows services in the specified order:
[Array] $Services = 'Service1','Service2','Service3','Service4','Service5';

# loop through each service, if its running, stop it
foreach($ServiceName in $Services)

    $arrService = Get-Service -Name $ServiceName
    write-host $ServiceName
    while ($arrService.Status -eq 'Running')
    
        Stop-Service $ServiceName
        write-host $arrService.status
        write-host 'Service stopping'
        Start-Sleep -seconds 60
        $arrService.Refresh()
        if ($arrService.Status -eq 'Stopped')
            
              Write-Host 'Service is now Stopped'
            
     
 

Lo mismo se puede hacer para iniciar una serie de servicios si no se están ejecutando:

# start the following Windows services in the specified order:
[Array] $Services = 'Service1','Service2','Service3','Service4','Service5';

# loop through each service, if its not running, start it
foreach($ServiceName in $Services)

    $arrService = Get-Service -Name $ServiceName
    write-host $ServiceName
    while ($arrService.Status -ne 'Running')
    
        Start-Service $ServiceName
        write-host $arrService.status
        write-host 'Service starting'
        Start-Sleep -seconds 60
        $arrService.Refresh()
        if ($arrService.Status -eq 'Running')
        
          Write-Host 'Service is now Running'
        
    

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *