每天进步一点点:获取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并回车:

Reveal spoiler

image.png

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

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

Reveal spoiler

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:

Reveal spoiler

image.png

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

Reveal spoiler

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

Reveal spoiler

image.png

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

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

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

Reveal spoiler

image.png

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

Event Viewer (事件查看器)

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

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

image.png

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

Reveal spoiler

image.png

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

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

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

Reveal spoiler

image.png

总结

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

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

相关链接

Sort:  

Your content has been voted as a part of Encouragement program. Keep up the good work!

Use Ecency daily to boost your growth on platform!

Support Ecency
Vote for new Proposal
Delegate HP and earn more

原來重啟大法才是正道,又長知識了(栗子舉得真好,我也時常不關機的😂)

其实换一种方式来尝试一下也未必不可,说不定就能够找到一个突破性的新技术

O哥真是好學不倦呀!👍👍👍