Como detecto quando um PC foi completamente desligado?

1

Eu posso

  1. encerre um computador remoto usando shutdown /s /m \\MachineName ; e

  2. corte a fonte de alimentação desse computador remoto (pense no interruptor de energia com IP com comunicação Telnet).

Eu quero executar as duas tarefas sequencialmente, mas por razões óbvias, a Tarefa 2 não deve ser chamada antes que a Tarefa 1 tenha sido bem-sucedida.

Ambas as tarefas são executadas dentro de um aplicativo (VB6). Eles correm como pretendido, individualmente. Mas, em série, preciso descobrir com segurança quando a máquina remota foi desligada completamente, antes de executar a Tarefa 2.

Portanto, a pergunta é: como posso detectar com segurança a finalização da Tarefa 1? É mesmo possível? Por exemplo, eu poderia usar um script de shell?

Timing Task 1 não é uma opção: ele pode ser executado por uma duração imprevisível (pense em atualizações do Windows, "não desligue esta máquina até terminar").

    
por Herb 10.05.2017 / 13:24

1 resposta

4

Você não pode.

Em algum momento, o Windows desativa a rede e, a partir desse momento, você simplesmente não pode saber a partir do próprio PC se ele ainda está ligado ou não. Se o seu interruptor de energia puder medir quanta voltagem está sendo tirada (um No-Break pode), então você pode medir a voltagem e, assim que chegar a 0, você saberá que o PC está desligado.

Para esclarecer como as atualizações do Windows funcionam; a atualização é baixada quando você ainda está no Windows. O Windows então desliga e sai do kernel. Fora do Windows, as atualizações são instaladas. Isso é necessário para que a atualização possa alterar os arquivos que estão em uso. Eu usei o UPS como exemplo. Existem powerbricks que podem ser controlados por rede também. Deve haver um que possa ler a potência de todos os dispositivos.

    
por 11.05.2017 / 16:52