Answers:
Windows将事件日志与事件查看器一起使用来记录这种事情:
事件ID#6005指示系统启动
事件ID#6006指示系统关闭
您应该在“事件查看器”中创建一个自定义视图,该视图将过滤这两个事件ID,其来源为事件日志。
这是最简单的方法。
或者,您可以使用PowerShell的Get-WinEvent cmdlet创建自定义筛选器,并将这些项目通过管道传输到文本文件。
或者...,您可以使用Get-EventLog将自定义事件日志(使用自定义视图创建的日志)通过管道传输到文本文件。
Event Viewer
,单击Windows Logs
-> System
。在右侧有Filter Current Log...
,点击它,并在出现新的窗插件6006
上All Event ID's
,然后点击Ok
。这将仅显示系统关闭事件。对系统启动执行相同的操作。
6005正在显示记录事件的开始,但是我认为它也会在任何重新启动的情况下显示,即Windows在“完全启动”或热启动之间没有区别。
如果目的是仅查找第一次启动和最后一次关闭,则必须删除所有重复的6005条目。
对于我来说,事件ID 12是第一个事件,事件ID 13是最后一个事件。
12:在源(Microsoft-Windows-Kernel-General)中找不到事件ID(12)的描述。引发此事件的组件未安装在计算机上,或者安装已损坏。您可以安装或修复该组件,也可以尝试更改Description Server。
13:找不到源(Microsoft-Windows-Kernel-General)中事件ID(13)的描述。引发此事件的组件未安装在计算机上,或者安装已损坏。您可以安装或修复该组件,也可以尝试更改Description Server。
事件(插入字符串)包含以下信息:2012-12-25T18:23:26.070181000Z
PS:除此之外,我有许多实例记录了一些6005,但随后没有6006。必须基于当天的最后一个事件日志条目手动添加实际注销。
使用PowerShell的Get-EventLog,以下(长)单行代码会将请求的输出输出到文本文件:
Get-EventLog -LogName System | Where-Object {(($_.EventID -eq 6005) -or ($_.EventID -eq 6006)) -and ($_.TimeGenerated -gt [DateTime] "2017-05-01")} | Select-Object EventID, TimeGenerated, Message | Sort-Object -Property TimeGenerated | Foreach { if ($_.EventID -eq 6005) { $out = "Startup" } else { $out = "Shutdown" + "`r`n"} ($_.TimeGenerated.ToString() + ' ' + $out); } > C:\temp2\_ComputerStartsAndStops.log
C:\temp2
必须存在才能正常工作。如果它不存在,请创建它或将单行更改为使用另一个(现有)目录。TimeGenerated.ToString()
” 替换“ TimeGenerated.ToString("s")
”。Sort-Object
” 替换为“ Sort-Object -Descending
”。可以将单行代码放入脚本中,但随后必须注意权限才能起作用。相反,最简单的方法是:
CMD
并按Enter。powershell
并按Enter。(在Windows 10上,可以通过Window+ X并选择“ Windows PowerShell”直接打开PowerShell)C:\temp2\_ComputerStartsAndStops.log
。如果您没有将时间用于特定用途,则可能对您有所帮助。 TurnedOnTimesView:监视Windows启动和关闭时间