Windows Server重新启动/关闭历史记录


87

如何轻松查看Windows Server每次重新启动或关闭时的历史记录以及其原因(包括用户启动,系统启动和系统崩溃)的原因?

Windows事件日志是一个明显的答案,但是我应查看的事件的完整列表是什么?

我发现这些帖子部分回答了我的问题:

但是这些内容并不能涵盖AFAIK的所有情况,而且该信息分散在多个答案中,因此很难理解。

我有Windows Server的多个版本,因此至少适用于2008、2008 R2、2012和2012 R2版本的解决方案是理想的。


1
在某些情况下,Nirsoft的TurnedOnTimesView可能足够好。(nirsoft.net/utils/computer_turned_on_times.html),它显示了重新启动和关闭时间。
Peter Hahndorf

您是否使用外部监视工具,例如opsview,nagios,icinga,shinken?这些工具将监视结果存储在数据库中,然后您可以检查服务器是否重新启动以及何时重新启动
030 2015年

Answers:


100

我能找到的最清晰,最简洁的答案是:

列出了要监视的这些事件ID(引用但已对其进行了编辑和重新格式化):

  • 事件ID 6005替代):“事件日志服务已启动。”这与系统启动同义。
  • 事件ID 6006替代):“事件日志服务已停止。”这与系统关闭同义。
  • 事件ID 6008替代):“以前的系统关闭是意外的。” 记录系统未正确关闭后启动的情况。
  • 事件ID 6009替代):指示在引导时检测到的Windows产品名称,版本,内部版本号,Service Pack编号和操作系统类型。
  • 事件ID 6013:显示计算机的正常运行时间。此ID没有TechNet页面。

另外,我的OP中列出的“服务器故障”答案还包括以下几点:

  • 事件ID 1074备用):“由于以下原因,进程X代表用户Y启动了计算机的重启/关闭:”。指示应用程序或用户启动了重新启动或关闭。
  • 事件ID 1076备用):“用户X为此计算机上次意外关闭提供的原因是:Y。” 记录意外重启或关闭后具有关闭特权的第一个用户登录计算机的时间,并提供发生原因的信息。

我有想念吗?


3
要区分由于检查错误而导致的掉电和重新启动,请查找事件ID 41(来源:Microsoft-Windows-Kernel-Power)和事件ID 1001 :(来源:BugCheck)的组合。前者不带后者则表示掉电或复位。
sendmoreinfo

4
这很有帮助。谢谢johnC。在“过滤当前日志”窗口的“包含/排除事件ID”的输入字段中,我输入了“ 6005、6006、6008、6009、6013、1074、1076”,它恰好满足了我的需求。
joey

1
您可能应该添加Kernel-Generaleventid12,它通常是重新启动/重置等后记录的第一个eventid,并显示实际的“系统启动时间”,即:“操作系统在系统时间2017-09-处启动。 19T02:46:06.582794900Z。”
亚伯

此答案中的链接已断开
Tim Schmelter

1
我进行搜索,但未能在事件日志代码上找到当前的Microsoft文档,因此我在Microsoft Docs github中创建了一个问题,以获取有关在新的MS docs体制github.com/MicrosoftDocs/windowsserverdocs/issues中何处恢复该内容的建议/共识。/ 444。@ tim-schmelter请投票并添加您的想法。
JohnC

4

由于JohnC基本上涵盖了所有内容,因此我只是将其保留为评论,但是我还没有被允许这样做。

他描述的事件已经使用了很长时间,因此它们可以用于您提到的任何OS以及其桌面上的兄弟。他链接到的事件ID页面(例如TechNet上的6006页面)提到Windows Server 2003。

如果进行了正常的关闭,用户启动或其他方式的关闭,您还应该看到一些事件ID 7036,该事件ID告诉您各种服务“已进入停止状态”。随着机器再次启动,您将看到更多7036宣告服务正在进入运行状态。


2
如果服务重复循环状态,您还将看到事件ID 7036的一大块,因此这不是查找重新启动的最佳方法。首先,您应该查找JohnC 描述的事件
JTL

3

@JohnC的答案为基础并对其进行扩展

您可以使用XML过滤器,例如:

<QueryList>
<Query Id="0" Path="System">
<Select Path="Security">*[System[Provider[@Name='eventlog' or @Name='Microsoft-Windows-Eventlog'] and (EventID=1074 or EventID=1076 or EventID=6005 or EventID=6006 or EventID=6008) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="Setup">*[System[Provider[@Name='eventlog' or @Name='Microsoft-Windows-Eventlog'] and (EventID=1074 or EventID=1076 or EventID=6005 or EventID=6006 or EventID=6008) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='eventlog' or @Name='Microsoft-Windows-Eventlog'] and (EventID=1074 or EventID=1076 or EventID=6005 or EventID=6006 or EventID=6008) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="Microsoft-Windows-Kernel-Power/Diagnostic">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power'] and (Level=1 ) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="Microsoft-Windows-Kernel-Power/Thermal-Diagnostic">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power'] and (Level=1 ) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power'] and (Level=1 ) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='User32'] and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-WER-SystemErrorReporting'] and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
</Query>
</QueryList>

您可以将以下时间范围的值替换为172800000:

86400000-最近24小时

172800000-最近2天

604800000-最近7天

从服务器/ PC脱机时开始,它将显示更多细节。它包括Kernel-Power,User32和EventLog事件。


2

我更喜欢从命令行完成活动。这是您可以利用的代码片段的开头。这将显示最新的30,000系统记录,并返回这些记录中的重新引导。

Get-EventLog -LogName System -Newest 30000 | Where-Object {$_.EventID -eq 6005}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.