1

У меня следующая проблема: мне нужно знать, когда запускается компьютер, запускается ли компьютер после выключения (холодный запуск) или просто перезагружается компьютер (горячий запуск). Через скрипт запуска, установленный в 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 ответ1

2

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

Get-WinEvent -FilterHashTable @{LogName="System"; ProviderName="User32"} -MaxEvents 1

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

$lastEvent = Get-WinEvent -FilterHashTable @{LogName="System"; ProviderName="User32"} -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 при запуске.

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