1

я смогу

  1. выключить удаленный компьютер через shutdown /s /m \\\MachineName ; а также

  2. отключите питание удаленного компьютера (подумайте, что выключатель питания с IP-адресом, поддерживающим связь TelNet).

Я хочу выполнить обе задачи последовательно, но по понятным причинам не следует вызывать задачу 2 до того, как задача 1 будет полностью выполнена.

Обе задачи выполняются в приложении (VB6). Они бегут, как задумано, индивидуально. Но поочередно мне нужно достоверно выяснить, когда удаленная машина была полностью выключена, перед выполнением Задачи 2.

Таким образом, вопрос заключается в следующем: как я могу надежно обнаружить завершение Задачи 1? Это вообще возможно? Например, могу ли я использовать сценарий оболочки?

Задание времени 1 не является вариантом: оно может выполняться в течение непредсказуемого времени (подумайте, обновления Windows, «не выключайте эту машину, пока не закончите»).

1 ответ1

4

Ты не можешь.

В какой-то момент Windows отключает сеть, и с этого момента вы просто не можете узнать от самого ПК, включен он или нет. Если ваш выключатель питания может измерить, какое напряжение потребляется (может ИБП), тогда вы можете измерить напряжение, и как только оно достигнет 0, вы узнаете, что компьютер выключен.

Чтобы уточнить, как работают обновления Windows; обновление загружается, когда вы все еще в Windows. Затем Windows выключается и выходит из ядра. За окнами обновления устанавливаются. Это необходимо для того, чтобы обновление могло изменять файлы, которые в противном случае используются. Я использовал UPS в качестве примера. Есть блоки питания, которыми можно управлять и по сети. Должен быть один, который может читать мощность всех устройств.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .