登录
首页 >  文章 >  软件教程

如何在 Windows 中查看系统总共开机了多少天 统计电脑累计运行时间

时间:2026-05-04 10:40:31 135浏览 收藏

推广推荐
前往下载Windows工具 ➜
支持 PC / 移动端,安全直达

你在学习文章相关的知识吗?本文《如何在 Windows 中查看系统总共开机了多少天 统计电脑累计运行时间》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

Windows系统累计开机总天数需通过日志回溯统计:一、事件查看器筛选ID6005/6006/6008事件手动累加运行时段;二、PowerShell脚本自动配对计算总秒数并转为天数;三、性能监视器分析Up Time归零点估算重启次数;四、注册表InstallDate与当前时间差得理论最大存活天数;五、LogParser工具解析evtx文件精确统计。

如何在 Windows 中查看系统总共开机了多少天 统计电脑累计运行时间

如果您需要了解 Windows 系统自首次安装或历史以来累计开机的总天数,而非单次连续运行时长,则不能依赖内核实时计时器(如“正常运行时间”),而需通过日志回溯与事件累加方式统计所有完整开机周期。以下是实现该目标的多种方法:

一、通过事件查看器提取全部开机与关机事件并手动累加

事件查看器完整记录每次系统启动(ID 6005)、正常关机(ID 6006)、意外断电(ID 6008)及计划重启(ID 1074),依据时间戳可逐段计算各次运行持续时间,并将所有有效运行时段(6005 → 6006 或 6005 → 6008)的秒数相加后换算为总天数。

1、按 Win + R 打开“运行”对话框,输入 eventvwr.msc 并回车,启动事件查看器。

2、在左侧导航树中,依次展开 Windows 日志 → 系统

3、在右侧操作面板点击 筛选当前日志

4、在“事件ID”栏中输入:6005,6006,6008,1074(英文逗号分隔),点击确定。

5、在结果列表中,按 TimeCreated 列升序排列,从最早一条 ID 6005 开始,查找其后最近的一条 ID 6006 或 ID 6008;若找到 ID 6006,用其时间减去该 ID 6005 时间,得到本次运行秒数;若为 ID 6008,则同样计算差值,视为一次非正常终止的运行周期。

6、将所有计算出的秒数相加,再除以 86400,所得整数即为累计开机总天数(忽略不足一天的尾数)。

二、使用 PowerShell 脚本自动配对事件并输出总天数

PowerShell 可批量读取系统日志中的启动与关机事件,按时间顺序自动配对每组 ID 6005 与其后续首个 ID 6006/6008,计算每段运行时长并求和,最终直接返回以天为单位的累计开机总时长(向下取整)。

1、以管理员身份启动 Windows Terminal(PowerShell)

2、执行以下命令获取过去 365 天内的相关事件(如需更长时间范围,可修改 -After 参数):
Get-WinEvent -FilterHashtable @{LogName='System'; ID=6005,6006,6008; StartTime=(Get-Date).AddYears(-1)} -ErrorAction SilentlyContinue | Sort-Object TimeCreated

3、粘贴并运行完整脚本:
$events = Get-WinEvent -FilterHashtable @{LogName='System'; ID=6005,6006,6008} -MaxEvents 10000 -ErrorAction SilentlyContinue | Sort-Object TimeCreated;
$uptimeSeconds = 0;
$bootTimes = @();
foreach ($e in $events) { if ($e.Id -eq 6005) { $bootTimes += $e.TimeCreated } elseif ($e.Id -in (6006,6008) -and $bootTimes.Count -gt 0) { $lastBoot = $bootTimes[0]; $uptimeSeconds += ($e.TimeCreated - $lastBoot).TotalSeconds; $bootTimes = $bootTimes[1..($bootTimes.Length-1)] } }; [Math]::Floor($uptimeSeconds / 86400)

4、脚本执行完毕后,终端将直接输出一个整数,即为 累计开机总天数

三、利用性能监视器导出“System\Up Time”历史采样数据

性能监视器虽仅显示当前会话的秒级计数器(System\Up Time),但若已启用数据收集器集并长期记录该计数器,则可通过分析历史 .blg 文件反推每日峰值变化,识别每次重启导致的计数器归零点,从而统计重启次数并估算最小累计开机天数(假设每次开机至少运行满 1 天)。

1、按 Win + R 输入 perfmon 并回车,打开性能监视器。

2、在左侧导航窗格中,展开 数据收集器集 → 用户定义,检查是否存在已配置并启用的收集器,其计数器包含 System\Up Time

3、若存在有效历史记录,右键对应数据收集器,选择 最新报表 或导出为 CSV。

4、在导出文件中查找 System\Up Time 数值列,定位所有 突降至接近 0 的时间点,每个此类点代表一次系统重启。

5、统计该列中重启发生次数,再加 1(当前会话),即得最小开机次数;若确认每次开机均持续 ≥24 小时,则该数值即为保守估计的 累计开机总天数下限

四、结合注册表 LastBootUpTime 与系统安装日期粗略估算

注册表中 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate 存储系统首次安装的 Unix 时间戳(自 1970-01-01 起秒数),而 WMI 的 LastBootUpTime 表示最近一次启动时刻;二者差值反映系统存活总时长上限,虽不等于实际开机天数(含关机休眠期),但可作为理论最大值参考。

1、按 Win + R 输入 regedit 并回车,启动注册表编辑器。

2、导航至路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

3、在右侧查找名为 InstallDate 的 DWORD 值,双击查看其十进制数值(例如 1672531200)。

4、打开 PowerShell,执行:$install = [DateTimeOffset]::FromUnixTimeSeconds(1672531200).DateTime; $now = Get-Date; ($now - $install).Days(将 1672531200 替换为实际值)。

5、输出结果为自安装日起至今的总天数,即该系统的 理论最大累计存活天数,实际开机天数必小于此值。

五、使用第三方工具 LogParser 批量解析 evt/evtx 文件精确统计

LogParser 是微软官方提供的命令行日志分析工具,支持 SQL 语法直接查询 Windows 事件日志文件(.evtx),可一次性扫描全部历史日志,精准匹配 ID 6005 与后续关机事件,并自动完成时间差计算与累加,适用于拥有多年系统日志存档的场景。

1、从微软官网下载并安装 LogParser 2.2 工具。

2、以管理员身份打开命令提示符,切换至系统日志所在目录(通常为 %SystemRoot%\System32\winevt\Logs\)。

3、执行以下命令(需先备份日志以防锁定):
LogParser "SELECT COUNT(*) AS BootCount FROM Security.evtx WHERE EventID=4608" -i:EVTX

4、针对系统日志执行更复杂聚合:
LogParser "SELECT QUANTIZE(TimeGenerated, 86400) AS DayBucket, COUNT(*) AS BootsPerDay INTO boots_per_day.csv FROM System.evtx WHERE EventID=6005 GROUP BY DayBucket ORDER BY DayBucket" -i:EVTX -o:CSV

5、打开生成的 boots_per_day.csv,逐行确认每日开机次数;若每日仅 1 次且无缺失,则行数即为 有记录的开机天数;将各日 BootsPerDay 相加,即得总开机次数。

今天带大家了解了的相关知识,希望对你有所帮助;关于文章的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>