Existe uma maneira de iniciar ou parar um serviço do powershell e bloquear até que o serviço seja iniciado?

1

Eu tenho que redefinir uma seqüência de serviços em um grupo de servidores em uma determinada ordem. sc.exe é assíncrono, retornará quando o serviço estiver no estado START_PENDING ou STOP_PENDING. Start-Service / Stop-Service aguardará o início ou o término do serviço, mas ele só funciona na máquina local e não tenho o remoting ativado em meu ambiente.

Existe um exe alternativo ou CmdLet para fazer isso? Parece que vou ter que usar a API .NET.

    
por Justin Dearing 05.03.2012 / 00:01

3 respostas

1

Na verdade, é possível usar os comandos Start-Service e Stop-Service do PowerShell em uma máquina remota (discussão sobre este aqui ). Eu testei isso e confirmei que funciona:

Start-Service -inputobject $(get-service -ComputerName SERVER_NAME -Name SERVICE_NAME)

Além disso, você pode tentar wmic parar o serviço. Parece que o serviço deve parar antes de continuar, embora eu não tenha testado completamente isso.

wmic /node:"SERVER_NAME" service where name="SERVICE_NAME" call stopservice
    
por 10.05.2013 / 00:57
4

Os cmdlets do PowerShell Stop-Service e Start-Service aguardarão até que os serviços sejam completamente interrompidos e iniciados, respectivamente.

Você pode usar a opção -Force para Stop-Service para impedir que os serviços dependam do serviço que você está tentando interromper.

Além disso, se você quiser se livrar da mensagem de Aviso dizendo que o cmdlet está aguardando que o serviço termine de parar / iniciar, você pode adicionar a opção -WarningAction SilentlyContinue .

    
por 05.03.2012 / 03:42
0

Eles não têm argumentos que permitam fazer isso de forma síncrona.

Em vez disso, você pode criar um loop while que verifica se o serviço foi iniciado.

    
por 05.03.2012 / 00:45