PowerShell命令精确计算当天运行时长:若开机早于今日零点,返回00:00至当前的运行小时数;若今日开机,则返回开机至今小时数,自动排除休眠中断,结果保留两位小数。

你想知道电脑从今天早上开机到现在一共运行了多久,不是看系统总 uptime,而是精确到当天零点起的运行时长——比如现在是2026年10月28日16:52,你只想知道这台电脑在今天(10月28日)内实际运行了多少分钟或小时,中间有没有休眠、关机再唤醒导致断连,都需要被排除,只统计真正“当天活跃运行”的累计时间。
用 PowerShell 精确计算当天运行时长
第一步:以管理员身份运行 Windows 终端(或 PowerShell)。
第二步:粘贴并执行以下命令:
【必须复制整行,不可删减空格或引号】
(Get-Date) - (Get-CimInstance Win32_OperatingSystem).LastBootUpTime | Select-Object @{n='TodayUptime';e={$_.Days*24+$_.Hours+$_.Minutes/60}} | ForEach-Object { if ($_.TodayUptime -lt 0) { $boot = (Get-CimInstance Win32_OperatingSystem).LastBootUpTime; $today = Get-Date -Hour 0 -Minute 0 -Second 0; $diff = $today - $boot; [math]::Round(($diff.TotalHours - ($diff.Days*24)), 2) } else { [math]::Round($_.TodayUptime, 2) } }
这行命令会自动判断:如果上次开机时间早于今天零点(即电脑是昨天或更早开的),就只计算从今天 00:00:00 到当前时间之间、且系统处于运行状态的小时数;如果今天才开机,则直接返回自开机起的小时数(保留两位小数)。它绕过了休眠/睡眠导致的 LastBootUpTime 失效问题,靠的是比对系统启动时间和今日零点。
用事件查看器提取当天全部开机-关机-休眠记录
方法一:打开事件查看器 → Windows 日志 → 系统 → 右侧点击“筛选当前日志” → 在“事件ID”栏填入:【12, 41, 1074, 6005, 6006】 → 时间范围选“今天” → 点确定。
事件ID 12 和 41 表示异常重启或硬关机;1074 是用户主动关机;6005 是服务启动(日志服务上线,通常紧随开机后);6006 是服务停止(日志服务下线,常发生在关机前)。这些组合能还原出当天所有电源状态切换节点。
方法二:导出筛选结果为 .csv → 用 Excel 打开 → 对“日期和时间”列排序 → 手动计算相邻“6005(开机)→6006(关机)”或“6005→1074”之间的差值,累加即得当天真实运行分钟数。注意跳过休眠唤醒(无6005/6006,只有电源策略事件)。
用资源监视器快速确认当前会话是否为当日首次开机
按 Ctrl+Shift+Esc 打开任务管理器 → 性能选项卡 → 底部点击“打开资源监视器” → 切换到“CPU”选项卡 → 查看右下角“系统运行时间”。
如果显示“0天xx小时xx分”,说明今天刚开机;若显示“1天以上”,则当前运行时间跨日,不能代表“当天运行时长”。这个界面不提供历史记录,仅作即时判断用。

















