Как в консоли (CMD) узнать, было ли инициировано завершение работы системы?

Здравствуйте!
С помощью программы shutdown.exe можно инициировать перезагрузку/выключение компьютера.
Вопрос в том: как узнать, на когда запланировано выключение/перезагрузка, и что запланировано, перезагрузка/выключение?

Например, я вызвал shutdown.exe с такими ключами -r -f -t 6000, как теперь в консоли узнать, когда произойдет перезагрузка? И перезагрузка ли это будет, а вдруг выключение?

Для чего? Хочу проверку в забиксе сделать...
  • Вопрос задан
  • 3651 просмотр
Решения вопроса 1
landergate
@landergate
IT-шный jack-of-all-trades
Простого API для получения такой информации не существует.

-- Можно узнать, что в системе запущен отложенный shutdown/restart:
EventLog ID 1074 (STATUS_SHUTDOWN_CLEAN) - событие о плановом рестарте (включая отложенные)
EventLog ID 1074 (WARNING_ISSE_SHUTDOWN_CANCELLED) - событие об отмене рестарта (включая отложенные)

Откладывание рестарта через shutdown /t время вызывает процесс wlmdr.exe, который рисует бабл про "Ваш сеанс работы будет прекращен. Работа Windows будет завершена через 111 мин".

Наличие свежего EventLog по ID 1074 и наличие wlmdr.exe в процессах может указывать на запланированный shutdown/restart. На этих двух условиях можно построить триггер.

-- Можно узнать, что именно будет запущено:
EventLog ID 1074 содержит строчку "Тип выключения" (Shutdown Type), в которой будет "Перезапустить" или "Выключение питания" (на англ.: reboot или shutdown).

-- Низкоуровневый способ узнать и состояние и время:
Можно проверять состояние "ShutdownInProgress" и "ShutdownTime" отладчиком, подключившись к winlogon.exe.

https://blogs.msdn.microsoft.com/ntdebugging/2007/...

Конечно это значительно более тяжёлый путь, который не очень подходит для массового выполнения заббиксом на рабочих станциях сотрудников.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы