Перезагрузка или выключение?

435
Luciano

У меня следующая проблема: мне нужно знать, когда запускается компьютер, запускается ли компьютер после выключения (холодный запуск) или просто перезагружается компьютер (горячий запуск). Через скрипт запуска, установленный в gpedit, я должен знать ответ, что-то вроде:

If PC restarted then  msg: The PC has been warm reboot  elseif PC shutdown then  msg: The PC has been cold reboot  end if 

(примечание: на самом деле электронное письмо отправлено, но это не важно).

Теперь я спрашиваю сообщество, как я могу восстановить эту информацию из системы? Моя отправная точка - инструмент «Просмотр событий», но я не очень доволен этим решением. Я думаю, что события ACPI хранятся в хранилище BCD, и мне интересно, возможно ли их восстановить каким-либо образом. Возможно через WMIC? Или также существует ли системный файл журнала, из которого можно напрямую получить информацию?

У кого-нибудь есть идеи, как поступить?

Примечание: на данный момент меня интересует только среда Windows, но я думаю, что она также интересна для Unix и Unix, таких как (например, Linux).

1
Для Windows нет разницы между перезагрузкой и выключением, когда вы снова входите в свою учетную запись. Windows знает, что произошла перезагрузка, и знает, что происходит выключение, но нет разницы, когда дело доходит до входа в систему Ramhound 6 лет назад 0
Можно сравнить время с момента последнего выключения Xen2050 6 лет назад 0
Здравствуйте Ramhound Это вопрос для более опытных, и, вероятно, также остается без ответа. В любом случае, то, что вы говорите, неверно: при попытке перезагрузить компьютер (и проверить время) и при следующем перезапуске откройте «Просмотр событий» и отфильтруйте «Журналы Windows» -> «Система», уровень «Информация», источник «USER32», ID 1074, рассказывает, как был перезапущен аппарат (проверьте время!). Luciano 6 лет назад 0
Я скажу вам больше: если компьютер выключается из-за сбоя питания, при следующем перезапуске появляется меню EMS, где вы можете выбрать, запускать ли компьютер в «Безопасном режиме», «Обычно» и т. Д., И это подразумевает что эта информация хранится где-то в BCD, это очевидно. Наконец, для полноты добавлю, что в серверных системах (и только в серверных системах) помимо выбора режима выключения вы можете добавить описание события, которое затем сохраняется где-то в системе (я полагаю, в файле журнала). ), но где именно? Luciano 6 лет назад 0
Вероятно, эту информацию также можно найти в реестре, в кусте «Система», но и здесь, где? Luciano 6 лет назад 0
Для Xen2050 Извините, я не понимаю, где я могу найти эту информацию? Это именно то, что я ищу! Luciano 6 лет назад 0
Я полагаю, что в Linux вы могли бы использовать последнюю версию, которая должна показывать разницу между выключением и перезагрузкой, и отсутствовать, если питание отключено. davidgo 6 лет назад 0

1 ответ на вопрос

2
Ram Kumaran

Вы можете использовать powershell, чтобы получить подробности

Get-WinEvent -FilterHashTable @ -MaxEvents 1 

Приведенная выше команда получит вам последнюю информацию о завершении работы системы / перезагрузке. По умолчанию журналы извлекаются первыми, поэтому ограничение до 1 приведет к последнему событию. Кстати, благодаря комментарию @ Лучано, который очень помог. Ниже приведен полный сценарий для вашего случая.

$lastEvent = Get-WinEvent -FilterHashTable @ -MaxEvents 1 $restarted = $lastEvent.Message -like "*restart*" if($restarted) { Write-Host "The PC has been warm reboot" -ForegroundColor Red } else { Write-Host "The PC has been cold reboot" -ForegroundColor Green } 

Вы можете сослаться здесь о том, как выполнить сценарий PowerShell при запуске.

Привет Рэм, вывод не появляется в окне подсказки на моей системе, но в PowerShell ISE работает отлично. Большое спасибо. Действительно хорошо. Luciano 6 лет назад 0
Я думаю, что вы ищете нажатие любой клавиши, чтобы продолжить .. поведение, вы можете проверить эту ссылку: https://stackoverflow.com/questions/20886243/press-any-key-to-continue Также я не знаю много об Именах Провайдеров для этих событий, я пришел с User32 на основе одного из ваших комментариев, я тоже многому научился у вас, спасибо :) Ram Kumaran 6 лет назад 0