重启还是关机?

重启还是关机?

我有以下问题:我需要知道 PC 何时启动,计算机是否在关闭后启动(冷启动),或者计算机是否只是重新启动(热启动)。通过在 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

(注意:实际上已经发送了一封电子邮件,但这并不重要)。

现在,我向社区询问,我如何从系统中恢复这些信息?我的出发点是“Eventviewer”工具,但我对这个解决方案不太满意。我认为 ACPI 事件存储在 BCD 存储中,我想知道是否有可能以任何方式恢复它们。也许通过 WMIC?或者,是否有一个系统日志文件可以直接从中检索信息?

有人对如何进行有什么想法吗?

注意:目前,我只对 Windows 环境感兴趣,但我认为对 Unix 和类 Unix(例如 Linux)也很有趣。

答案1

您可以使用 powershell 获取详细信息

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

上述命令将获取最新的系统关机/重启事件信息。默认情况下,首先检索最新的日志,因此限制为 1 将提供最新事件。顺便说一句,感谢@Luciano 的评论,这对我帮助很大。以下是针对您的案例的完整脚本。

$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 脚本。

相关内容