我想记录我的计算机启动和关闭的时间。我不需要任何诊断信息或任何东西,只需要简单记录日期和时间,例如:
2011/04/29 08:17:34 AM Startup
2011/04/29 05:26:52 PM Shutdown
我怎样才能做到这一点?
到目前为止,我通过 Google 搜索发现很多人询问如何减少 Windows 启动时间,但没有人对眼前的任务感兴趣。
答案1
Windows 使用带有事件查看器的事件日志来记录此类事件:
事件 ID #6005表示系统启动
事件 ID #6006表示系统关闭
你应该创造自定义视图在事件查看器中,它将过滤以事件日志为源的两个事件 ID。
这是最简单的方法。
或者,你可以使用 PowerShell 的获取 WinEventcmdlet 创建自定义过滤器并将这些项目传送到文本文件。
或者...您可以使用获取事件日志将自定义事件日志(使用自定义视图创建...)传送到文本文件。
答案2
6005 显示日志记录事件的开始,但我认为它也会在任何重新启动的情况下显示,即 Windows 不会区分“完全启动”或热重启。
如果目的只是寻找第一次启动和最后一次关闭,则必须删除任何重复的 6005 条目。
对我来说,事件 ID 12 是第一个,事件 ID 13 是最后一个。
12:在源 ( Microsoft-Windows-Kernel-General ) 中找不到事件 ID ( 12 ) 的描述。引发此事件的组件未安装在计算机上,或者安装已损坏。您可以安装或修复该组件,或者尝试更改描述服务器。
13:在源 ( Microsoft-Windows-Kernel-General ) 中找不到事件 ID ( 13 ) 的描述。引发此事件的组件未安装在计算机上,或者安装已损坏。您可以安装或修复该组件,或者尝试更改描述服务器。
事件中包含以下信息(插入字符串):2012-12-25T18:23:26.070181000Z
附言:除此之外,我遇到过许多这种情况,其中记录了几个 6005,但没有记录后面的 6006。必须根据当天的最后一个事件日志条目手动添加实际注销。
答案3
使用 PowerShell获取事件日志以下(长)单行代码将把请求的输出输出到文本文件:
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
必须存在才能正常工作。如果不存在,请创建目录或将一行代码更改为使用其他(现有)目录。 - 要获得输出ISO 8601格式,将“
TimeGenerated.ToString()
”替换为“TimeGenerated.ToString("s")
”。 - 单行代码中有一个内置时间过滤器(仅包括 2017-05-01 之后的启动和关闭)。如果需要更早的启动和关闭,请将“2017-05-01”更改为其他时间。
- 如果需要按时间倒序输出,则将“
Sort-Object
”替换为“Sort-Object -Descending
”。 - 由于它使用 Get-EventLog,因此它也可以在旧版本的 Windows 上运行。
操作说明
可以将一行代码放入脚本中,但必须先处理权限才能运行。相反,最简单的方法是:
- 打开 Windows 命令提示符:Window+ R,输入
CMD
并按Enter。 - 输入
powershell
并按Enter。 (在 Windows 10 上,可以通过Window+X并选择“Windows PowerShell”) - 将一行代码复制到剪贴板。
- 粘贴一行代码:Alt+ Space→编辑→粘贴(在较新版本的 Windows 上,正常的Ctrl+V实际上适用于 CMD 和 PowerShell 窗口(现在均在 conhost.exe 下运行))。
- 按Enter
- 等待它完成(可能需要很长时间,特别是如果它是旧版本的 Windows 安装)。
- 结果可以在文件中找到
C:\temp2\_ComputerStartsAndStops.log
。
答案4
如果您没有将时间用于特定用途,也许这会对您有所帮助。 TurnedOnTimesView:监控 Windows 启动和关闭时间