Executando verificação de segurança...
2

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

Carregando publicação patrocinada...
4

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

2

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!

1
1
1
1
1

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.