如何轻松查看我的 Windows Server 每次重新启动或关闭的历史记录以及原因,包括用户启动、系统启动和系统崩溃?
Windows 事件日志是一个显而易见的答案,但我应该查看的完整事件列表是什么?
我发现这些帖子部分回答了我的问题:
- Windows 服务器上次重新启动时间包括几个部分解决完整重新启动历史记录的答案
- 查看 Windows Server 2008 R2 下的 Shutdown Event Tracker 日志包含一个额外的事件 id
- 计算机启动/启动时的事件日志时间包括一些相同的事件 ID
但这些并没有涵盖所有场景 AFAIK 并且信息很难理解,因为它分布在多个答案中。
我有多个版本的 Windows Server,因此至少适用于 2008、2008 R2、2012 和 2012 R2 版本的解决方案将是理想的。
我能找到的最清晰最简洁的答案是:
其中列出了要监视的这些事件 ID(引用但从文章中编辑和重新格式化):
从我的 OP 中列出的服务器故障答案中添加更多内容:
我错过了吗?
将@user10082评论变成答案。建议的解决方案是单行的,如 Powershell 脚本:
这是输出:
我只是将其作为评论留下,因为 JohnC 基本上涵盖了所有内容,但我还不允许这样做。
他描述的事件已经使用了很长一段时间,因此它们适用于您提到的任何操作系统,以及它们的桌面兄弟。他链接到的事件 ID 页面,例如 TechNet 上的6006页面,提到了 Windows Server 2003。
如果出现优雅关闭、用户启动或其他情况,您还应该看到一些事件 ID 7036告诉您各种服务“进入停止状态”。随着机器再次启动,您将看到更多的 7036 通知服务正在进入运行状态。
我更喜欢从命令行完成活动。这是您可以利用的片段的开头。这将显示最近的 30,000 条系统记录并返回这些记录中的重新启动。
以@JohnC的回答为基础并对其进行扩展
您可以使用 XML 过滤器,例如:
您可以将 172800000 替换为以下时间范围的值:
86400000 - 过去 24 小时
172800000 - 过去 2 天
604800000 - 过去 7 天
这将显示服务器/PC 离线时的更多详细信息。它包括 Kernel-Power、User32 和 EventLog 事件。
psloglist
使用 SysInternals和上面的事件 id 从远程机器获取最近 8 小时的重新启动和启动时间的简明一行:唯一缺少的(对我来说)是“登录对话框准备好用户”等效的事件ID。这似乎很难找到(我可以查询什么以查看 Windows 是否已启动并完成更新?)