我有以下问题:我需要知道 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 脚本。