Apesar de ser um tópico mais antigo, gostaria de adicionar uma solução que eu tenha criado e que funcione bem.
Eu queria executar um script ou arquivo em lotes sempre que um desligamento ou reinício era iniciado, mas não queria usar a função Scripts de desligamento de diretivas de grupo. A razão para isso foi bastante profunda, mas eu basicamente precisava executar um script antes que certos serviços fossem fechados.
Acabei criando uma tarefa agendada da seguinte forma:
- Tipo : no evento (básico)
- Log : sistema
- Origem : User32
- EventID : 1074
Quando um usuário ou comando inicia um desligamento ou reinicia como um usuário conectado ou em nome de um usuário, o evento ID 1074 será disparado. Ao criar uma tarefa para usar isso para acionar um script, ele iniciará o script e permitirá que ele seja concluído, no entanto, ele só relatará a tarefa como "em execução" ou "acionada" nos logs. Eu não usei isso com um longo script, então pode valer a pena testar mais, mas funciona muito bem para scripts curtos.