普通网友 2025-08-02 04:50 采纳率: 98.5%
浏览 0
已采纳

如何查看电脑开机时间记录?

**问题:如何通过命令行快速查看Windows系统最近的开机时间记录?** 在Windows系统中,用户常需排查系统启动时间或分析异常重启原因。虽然任务管理器可查看当前会话的开机时间,但无法获取历史记录。如何利用命令行工具(如PowerShell或CMD)快速查询系统最近多次的开机时间日志? **关键词**:如何查看电脑开机时间记录?
  • 写回答

1条回答 默认 最新

  • 高级鱼 2025-08-02 04:50
    关注

    一、基础概念:Windows系统如何记录开机时间?

    在Windows操作系统中,系统日志(Event Logs)记录了包括系统启动、关机、异常重启等关键事件。这些日志默认由事件日志服务(Event Log Service)管理,并存储在事件查看器(Event Viewer)中。

    与开机时间相关的事件ID主要包括:

    • 6005:事件日志服务启动,表示系统开始启动。
    • 6006:事件日志服务停止,表示系统即将关闭。
    • 12:内核日志记录系统启动。
    • 13:内核日志记录系统关机。

    通过查询这些事件,可以追溯系统最近几次的开机和关机时间。

    二、命令行查看:使用PowerShell获取最近开机时间

    PowerShell是Windows中功能强大的命令行工具,可以高效地查询系统日志。

    以下命令可获取最近5次的开机时间记录:

    Get-WinEvent -FilterHashtable @{LogName='System'; ID=12} | Select-Object -First 5 | Format-List TimeCreated, Id, Message

    输出示例:

    TimeCreatedIdMessage
    2024-03-25 08:12:3412The kernel power event log entry was written.
    2024-03-24 22:45:1112The kernel power event log entry was written.
    2024-03-24 14:30:0212The kernel power event log entry was written.
    2024-03-23 18:22:5512The kernel power event log entry was written.
    2024-03-23 10:01:4712The kernel power event log entry was written.

    三、进阶技巧:结合事件ID 6005/6006分析完整会话周期

    使用事件ID 6005(系统启动)和6006(系统关闭)可以更全面地分析系统的启动与关闭周期。

    示例命令如下:

    Get-WinEvent -FilterHashtable @{LogName='System'; ID=6005,6006} | Select-Object TimeCreated, Id | Sort-Object TimeCreated -Descending

    输出示例:

    TimeCreatedId
    2024-03-25 08:12:346005
    2024-03-25 07:45:106006
    2024-03-24 22:45:116005
    2024-03-24 14:30:026006

    通过比对6005与6006事件,可以计算出每次运行时间。

    四、脚本自动化:编写PowerShell脚本获取结构化数据

    为方便重复使用,可以将上述逻辑封装为PowerShell脚本。

    $events = Get-WinEvent -FilterHashtable @{LogName='System'; ID=6005}
    foreach ($event in $events) {
        $bootTime = $event.TimeCreated
        $nextShutdown = Get-WinEvent -FilterHashtable @{
            LogName='System';
            ID=6006;
            StartTime=$bootTime;
        } | Select-Object -First 1
    
        [PSCustomObject]@{
            BootTime = $bootTime
            ShutdownTime = $nextShutdown.TimeCreated
            Duration = if ($nextShutdown) { $nextShutdown.TimeCreated - $bootTime }
        }
    }

    五、流程图:从事件日志到获取开机记录的完整流程

    ```mermaid
    graph TD
        A[开始] --> B{选择事件日志}
        B --> C[事件ID 12或6005]
        C --> D[使用Get-WinEvent查询]
        D --> E[筛选最近N条记录]
        E --> F[格式化输出时间信息]
        F --> G[结束]
    ```
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 8月2日