3

Можно ли создать событие или скрипт для запуска при запуске компьютера с помощью Wake-On-Lan?

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

2 ответа2

3

Вот моя идея для создания такого триггера (но я не могу гарантировать успех). Поскольку у меня нет подходящей среды для тестирования идеи, с вашей стороны требуются некоторые эксперименты.

Следующая команда может использоваться для идентификации источника пробуждения:

powercfg -lastwake

В случае Wake-On-Lan (WOL) сообщаемое wake-устройство будет вашим Ethernet-контроллером.

Как только вы узнаете, что произошло такое событие, и укажите точное имя источника пробуждения, я пойму, как добавить скрипт триггера:

  1. Откройте окно просмотра событий и найдите событие WOL (где источником пробуждения является контроллер Ethernet).
  2. Щелкните правой кнопкой мыши событие и выберите «Прикрепить задачу к этому событию ...»
  3. Выберите "Запустить программу" в качестве действия
  4. Добавьте Powershell.exe и путь к вашему сценарию.
  5. Для большего контроля на шаге Готово установите флажок «Открыть свойства ...»
  6. На вкладке "Триггеры" отредактируйте триггер события, чтобы добавить более подробный запуск.

Некоторые ссылки и примеры, которые помогут начать работу:

2

Как уже упоминал Ramhound в комментариях, Windows не знает, как был включен компьютер. (WOL, событие таймера Bios, ручное включение и т.д.)

Единственное, что вы можете получить из Windows, это то, произошел ли запуск компьютера после обычного перезапуска или события выключения, или если компьютер был запущен после неожиданного отключения питания или принудительного выключения.
Эту информацию можно найти в журнале событий.

Лучшее, что вы можете сделать, применимо, если вы точно знаете, что событие WOL происходит только в тот период времени, когда вы никогда не будете использовать свой компьютер самостоятельно. Вы можете настроить запуск запланированного задания каждые 5 минут или около того в течение того периода времени, когда запускается скрипт для запуска приложения.
Задача должна быть сконфигурирована так, чтобы НЕ будить компьютер, поэтому он запускается только в том случае, если компьютер разбудил WOL. Сценарий должен сначала проверить, запущено ли уже приложение (если это: выход), и запустить приложение, если оно еще не запущено.

Дополнительно: если событие WOL происходит в случайное время, вы все равно можете использовать подход по расписанию, если вы настроили на своем компьютере НЕ использовать автоматический вход в систему. Если перед выходом из спящего режима вы обязательно выйдите из системы, компьютер выйдет из спящего режима по событию WOL, и никто не войдет в систему.
Вы можете проверить это в запланированной задаче и запустить приложение, только если никто не вошел в систему. Это немного сложно, поскольку Windows не предоставляет простой проверки для этого. Мой обычный подход к этому заключается в использовании tasklist | findstr explorer . Если есть пользователи, вошедшие в систему, вы получите 1 строку для каждого пользователя, потому что у каждого есть своя собственная копия файла explorer.exe. Но если никто не вошел в систему, то не работает ни один explorer.exe.

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