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. 🤝

Meu amigo, excelente isso que vc me passou. Vou testar e, sem dúvida nenhuma, funcionando, todos os créditos serão seus dentro do script! =) Em breve, retorno com o link do git e esse problema resolvido! Obrigado!
caso algo não funcione comenta aqui quer eu arrumo 🤝

controla o estado da execucao em algum lugar, quando o programa inicia lê o ultimo estado e continua

Então, isso até dá certo, mas sem o reboot da máquina. Se rebootar, já não deu certo.
onde vc está salvando? nāo pode ser na memória...tenta escrever em um arquivo

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.