Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Variável não Atualiza Automáticamente

Pessoal, boa noite.

Praticando um pouco da aula 05 - Resolvendo o problema com PowerShell, notei que a variável não atualiza automáticamente.

Detalhando o cenário:

Se eu executar o comando $servico = Get-Service -name Audiosrv e em seguida verificar o status dele com o $servico.Status o resultado será 'Running'. Se eu parar o serviço com o comando $servico.Stop() o serviço de fato é interrompido na minha máquina, porém, ao pedir o status logo em seguida com o comando $servico.Status ele ainda retorna como 'Running'.

Consegui contornar usando o parâmetro 'Refresh()', e o comando ficaria assim: $servico.Refresh()

Após isso, se eu pedir novamente o status com o $servico.Status o status é exibido corretamente, nesse caso 'Stopped'.

Há algo que possa ser feito para que a variável atualize o valor de forma imediata sem a necessidade do 'Refresh()' ?

Ambiente:

  • Sistema Operacional: Windows 11 22H2
  • Windows Terminal: 1.17
  • PowerShell: Testado na versão 5.1 e 7.3.6
  • Terminal executado como administrador.

Abaixo a tela do PowerShell na sequência que descrevi:

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeObrigado

2 respostas
solução!

Olá, David! Tudo bem contigo?

Obrigada por compartilhar sua dúvida conosco. Entendo que você está enfrentando um problema ao atualizar automaticamente o valor de uma variável no PowerShell.

No seu caso específico, quando você para o serviço e verifica o status logo em seguida, a variável $servico ainda retorna o status anterior. Isso acontece porque a variável não é atualizada automaticamente após a execução do comando $servico.Stop().

Para contornar essa situação, você está utilizando o método Refresh() da variável $servico, que atualiza o valor da variável com as informações mais recentes. Ou seja, após executar $servico.Refresh(), ao pedir novamente o status com $servico.Status, o status é exibido corretamente.

Infelizmente, não há uma forma nativa no PowerShell para que a variável atualize o valor de forma imediata sem a necessidade do Refresh(). O método Refresh() é necessário para atualizar a variável com os dados mais recentes.

Portanto, a solução que você encontrou utilizando $servico.Refresh() é a forma correta de atualizar a variável $servico com o status mais recente do serviço.

Era isso, caso precise eu estarei por aqui.

Abraços e bons estudos!

Obrigado!