Tenho o seguinte código e espero que meu miniprograma exiba o valor número um, pare o serviço e então exiba o valor número dois.
Verifiquei a documentação aqui e ela confirma que o próximo comando deve ser executado após o verdadeiro/falso da instrução IF ter sido executado.
https://www.pdq.com/blog/how-to-use-if-statements-in-powershell/
$AccServiceName = 'AccountLoaderService'
$AccService = Get-service $AccServiceName
if ($AccService.Status -eq 'Running')
{
Write-Host '1'
Stop-Service $AccServiceName
}
Start-Sleep -Seconds 20
if ($AccService.Status -eq 'Stopped')
{
Write-Host '2'
}
O que realmente acontece é que ele exibe o número um, mas nunca o número 2.
O serviço definitivamente para dentro dos 20 segundos especificados e se eu executar o comando novamente logo em seguida, sem a instrução sleep incluída, ele retorna o valor número 2.
Espero que faça sentido. Qualquer ajuda será muito apreciada.
Ao adicionar $AccService = Get-Service $AccServiceName após o comando Start-Sleep, você garante que o status do serviço seja atualizado antes de verificá-lo novamente. Isso deve permitir que seu script exiba '2' conforme o esperado.