oflyhigh avatar

每天进步一点点:获取Windows系统的Up time

oflyhigh

Published: 09 Jan 2022 › Updated: 09 Jan 2022每天进步一点点:获取Windows系统的Up time

每天进步一点点:获取Windows系统的Up time

最近这些天总感觉电脑不太正常,要说哪里不正常吧,就是偶尔卡顿一下,Word文档图标时不时地丢失,excel表格文件时不时地丢了打开方式,于是我想该应用我的重启大法了。

image.png
(图源 :pixabay)

尽管玩电脑N多年,学了不计其数的各种技巧,不过我觉得最能解决问题的两大方法就是重启和重装,当然了重装太过于麻烦(尽管现在有重置),所以最常用的就是重启大法了。

不过在应用重启大法之前,我突然好奇这次我的电脑有多久没有关机了?

朋友们可能好奇我为啥不关机,我举个栗子:查找资料时我经常开及时上百个浏览器窗口,putty啥的我也经常开着十多个,总有那么三五个记事本开着记着一些乱七八糟的东西,微信电脑版、电报乱七八糟的聊天窗口也开着好几个...... 如果关机,那么这些东西都要关掉,下次再开机,好多东西都要重新来弄,严重影响效率。

所以我电脑经常不关机,最严重的也就是让它处于待机模式,随便一个按键或者动一下鼠标,它就会在一秒钟之内苏醒过来,陪我一起打拼。除了系统强制升级,我几乎很少关机或者重启电脑。

不过这样有个问题是,因为时间太长,我都忘记了距离距离上次开机过了多久,当然了,其实过多久并没有什么意义,不过一旦好奇心起来,那是如何也压不住的。

说到开机过了多久,Linux下一个常用命令就是uptime,执行这个命令后,就会显示Linux系统开机多久了。

那么Windows下有没有类似的命令或者方法呢?我试了一下uptime,直接提示我:

'uptime' is not recognized as an internal or external command, operable program or batch file.

擦,果然是想多了,不过去了解一下,其实知道Windows系统的uptime,方式还是挺多的,有好几种呢,下面我来和大家一一分享:

任务管理器

使用任务管理器查看系统uptime,大概是最简单的方式了,在Windows任务栏空白处点击鼠标右键,选择“Task Manager”就可以调出任务管理器啦。

然后选择“Performance”标签,再选择“CPU”条目:
image.png

这时,CPU对应信息的左下角就会显示Up time啦,哇,我的电脑竟然已经24天没有关机啦。

systeminfo 指令

除了在任务管理器中查看,我们还可以使用systeminfo 指令来查看系统的uptime。

使用Win+R,调出运行框,输入cmd并回车:

image.png

然后在弹出的命令行窗口中输入:systeminfo

就会返回一系列和系统相关的信息,比如OS版本啦,CPU信息啦,内存信息啦,等等等等,以下是部分内容截图:

image.png

注意这个:System Boot Time: 12/15/2021, 10:37:56 PM
这就是系统上次启动(包括重启操作)时间,当前时间减去这个时间,就是系统的在线时间/uptime啦。是不是很方便?

PowerShell 命令

网上找到一个PowerShell获取uptime的例子,在PowerShell中执行以下指令:

(get-date) - (gcim Win32_OperatingSystem).LastBootUpTime

让我来操作一下,使用Win+R,调出运行框,输入powershell并回车,调出powershell(或者直接搜索🔍中输入powershell找到程序并进入)。

然后输入上述指令,可见正确地返回了uptime:

image.png

可是这有些知其然不知其所以然,所以进一步调查一下,首先gcim就是Get-CimInstance的简写或者说是别名:

image.png

而它的作用就是通过提供类名返回类实例,文档中这样解释这个指令:

Gets the CIM instances of a class from a CIM server.

gcim Win32_OperatingSystem就是获取Win32_OperatingSystem这个类实例,而这个实例有好多方法和属性,LastBootUpTime就是属性之一,表示:

Date and time the operating system was last restarted.

至于get-date一眼望去就是明面上的意思,获取当前系统时间日期喽,两者之差就是uptime喽。

不过通过查看Win32_OperatingSystem这个类,我发现另外一个属性LocalDateTime

image.png

所以我们应该也可以用下述指令来实现同样的功能:

(gcim Win32_OperatingSystem).LocalDateTime - (gcim Win32_OperatingSystem).LastBootUpTime

测试一下,和我想的完全一样:

image.png

看来PowerShell也非常强大呀,以后有机会好好学习一下。

Event Viewer (事件查看器)

现在我们已经知晓了好几种查看系统uptime的方法,不过还有一种方法是使用Event Viewer 。

在搜索🔍栏中输入Event Viewer前几个字符,就会调出Event Viewer程序:

image.png

然后选择,WIndows LogSystem条目,再到右侧Action中选择Filter Current Log:

image.png

再弹出的过滤对话框中的Event IDs中输入:6005(The event log service was started)
image.png

显示我最近几次开机时间,哈哈,果然都是大半个月才重启一次呢。
image.png

不过用6005总感觉怪怪的,我发觉12号ID更好一些呢:

image.png

总结

通过以上学习和测试,我们发现Windows下也有N多获取系统Uptime的方法呢。哎,不对,我不就是要重启一下电脑嘛?怎么弄这么多乱七八糟的东西呢。

不过学点东西总比虚度光阴的好,哎,也只能如此安慰自己啦。

相关链接

Leave 每天进步一点点:获取Windows系统的Up time to:

Written by

Programmer, Maker, Freelancer, Witness. Make friends, Make money, Make life better!

Read more #cn posts


Best Posts From oflyhigh

We have not curated any of oflyhigh's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From oflyhigh