Ajuda: [Powershell]
Fala galera, tudo bele? Seguinte, estou com uma necessidade em um script em Powershell o qual, após reiniciar a máquina onde está sendo executado, deverá reabrir no passo seguinte da execução.
Alguém tem ideia de como fazer isso?
[]'s
Bom primeiro vamos pensar de forma analitica, deve existir uma função exit que quando for fechado o PowerShell salva o status da execução, então vamos criar o codigo....
Exemplo de codigo:
$PowerShell = [System.Management.Automation.PowerShell]::Create()
$PowerShell.AddScript({
# Seu código aqui
})
$PowerShell.Runspace.Events.Exiting += {
# Código a ser executado quando o PowerShell for fechado
}
$PowerShell.Invoke()
ai vem a pergunta como ele vai saber onde parou? Otima pergunta, em cada função você deve adicionar um status diferente, no inicio de cada função.
Exemplo:
na função Criação de Tela
$status = "createdwindow"
na função Verificar
$status = "Check"
Onde está # Código a ser executado quando o PowerShell for fechado
você adiciona um "registrador" que vai passar para um txt onde a execução parou
Exemplo:
$status | Out-File -FilePath ".\meu_arquivo.txt"
LEMBRANDO QUE DAQUI PRA BAIXO O CODIGO DEVE ESTAR ACIMA DO QUE ESTIVER DENTRO DO # Seu código aqui
Agora vamos entrar na parte de resgatar o que foi registrado no txt pra saber qual parte deve ser iniciada e continuar a execução(lembrando que nenhum dado de varivel ficara salvo, caso queira implemente um txt para cada variavel)
exemplo:
$ondeparei = Get-Content -Path ".\meu_arquivo.txt"
Agora basta jogar em um if
e pra gente saber onde ele parou
if ($ondeparei == "Check") {
#chama a função check
check
}
É ta pronto o danoninho... Tem que ser criado uma tarefa para abrir o programa quando o sistema for reiniciado, vou deixar essa missão pra você kkkk
Obs.: Caso tiver algum erro basta comentar que eu arrumo pois ja são 04h05 da manha e eu posso ter esquecido ou deixado algo incompleto. 🤝
controla o estado da execucao em algum lugar, quando o programa inicia lê o ultimo estado e continua
Eu conheço duas maneiras de fazer isso, seria criando um agendador de tarefa e criar algum parâmetro especial, assim quando o agendador de tarefa chamar já continuar rodando de determinada parte.
Outra coisa que poderia ser feito seria criar um serviço onde ele vai iniciar após ser ligado.