我更喜欢一种不涉及搜索事件日志的解决方案,而应使用诸如
wmic
或cmd
命令之类的方法。#1 楼
systeminfo
命令几乎满足您的需求。在英语Windows 7上,您也可以执行以下操作:systeminfo | find /i "Boot Time"
或借助WMIC:
wmic os get lastbootuptime
Windows 7和Windows XP之间的主要区别是Windows 7 Microsoft仅显示最后一次启动时间。
也在任务管理器中:
#2 楼
执行此操作的另一种方法是使用在Windows XP和Windows 7中都可以使用的以下命令行:net statistics workstation
它具有比Windows XP更快的优点。格式化日期时选择
systeminfo
的替代方法(wmic
则不这样做)。如果实际使用此命令调试计算机,您还将获得一些其他有用的信息(由于您特别要求cmd
,因此我假设您不是以编程方式执行此操作)。您可以在以下网站上找到有关
net statistics
命令的更多信息:http://technet.microsoft.com/zh-cn/library/bb490714.aspx 以下是结果示例(使用法语) Windows 7 Pro SP1 x64的副本,用户语言对于命令行来说无关紧要):
(计算机名称是故意模糊的)
http://en.wikipedia.org/wiki/Uptime有关确定系统正常运行时间的准确性的更多详细信息。
重要说明:方法确定上次启动计算机的时间,而不是其正常运行时间。如果使用sleep / hibernate,则两个数字将有所不同。
评论
知道为什么这与使用systeminfo或wmic读起来不一样...这可能可以忽略不计,但是在我的系统上相差2分钟以上
– Anthony Shaw
2014年12月11日20:31
它在我的计算机上确实也相差40秒。我不知道为什么它不完全相同,我猜该服务稍后会启动。有关en.wikipedia.org/wiki/Uptime的一些有趣信息
– dan
2014年12月11日下午21:33
我的相差超过9个月:-)这是唯一正确的答案。它提供了最后一次引导的实际日期戳(或引导后启动任何相关服务的时间,如此接近),而wmic,任务管理器和systeminfo似乎都从当前时间倒数了PC的滴答数。一直在运行。但是,如果像我一样使计算机大量进入睡眠(或休眠)状态,则实际总运行时间将比自上次启动以来的时间(在我的情况下,过去几个月仅30天)少得多。该计算完全。
–卡梅伦
16-2-12在6:05
谢谢@cameron,我在回答的末尾添加了一条便条。最初的问题实际上是关于计算机何时启动而不是正常运行时间,因此这是一个重要的细节。 Wikipedia确实在我链接的正常运行时间文章中提到了差异。
– dan
16 Mar 10 '16 at 15:08
这实际上不是最后的“启动”时间,而是服务器或工作站服务启动的时间,具体取决于您查询的是哪个统计信息。由于这些操作不会在常规Windows会话中停止,因此很方便地近似了上次启动时间。
–oldmud0
17年6月7日在15:50
#3 楼
有LastBootUpTime
类的Win32_OperatingSystem
属性。您可以通过以下命令使用WMIC:wmic os get lastbootuptime
或者如果使用Powershell,则可以将时间转换为比烦人的WMI日期时间格式更易读的内容:
Get-WmiObject -class Win32_OperatingSystem | Select-Object __SERVER,@{label='LastBootUpTime';expression={$_.ConvertToDateTime($_.LastBootUpTime)}}
请注意,在更高版本的PowerShell中,您还可以使用Get-CimInstance,它将自动返回该值作为日期时间:
Get-CimInstance -Class Win32_OperatingSystem | Select-Object LastBootUpTime
<唯一麻烦的是,Get-CimInstance有时会更改WMI对象中某些系统字段的名称,例如__SERVER。您必须使用CSName
或PSComputerName
,这似乎对我有用。评论
20121217175810.414696 + 120我想我该死的好计算器才能计算时间
–罗伊·纳米尔(Royi Namir)
2012-12-24 14:43
@Royi是的,WMI时间戳很愚蠢。这是CIM_DATETIME,这是标准要求的格式。是yyyymmddHHMMSS.mmmmmmsUUU,使用24小时制。在这里,您的最后一次重启时间是2012年12月17日下午5:58。 msdn.microsoft.com/zh-CN/library/windows/desktop / ...
–培根片
2012-12-24 14:53
使用get-wmiobject方法的方便之处在于它也使获取远程计算机的启动时间变得微不足道。只需在命令中添加“ -computer <计算机名>”(在管道之前)
– camster342
13-10-20在22:22
#4 楼
对于在那里的Windows 10用户....评论
这将显示正常运行时间(即系统运行多长时间),而不是按OP要求启动系统的时间。
– David FerenczyRogožan
18年5月3日在20:25
是的,但这仍然有用。
–tbc0
18年7月13日在17:29
今天,我的Windows 10笔记本电脑显示出虚假的正常运行时间。昨晚我关闭了它,并在不到一个小时前将其打开,任务管理器说它已经在5:19:40:10了。
–tbc0
18-10-25在14:15
Windows 10在关闭时实际上并未关闭,我忘记了为什么。但是,如果要重置正常运行时间计时器,则必须重新启动。
–丹尼尔·海斯(Daniel Hayes)
18年1月1日在18:16
@DawidFerenczyRogožan当前时间-正常运行时间= OP要求的时间,对吗?
–klutt
19/12/4在15:48
#5 楼
请注意,正如Alex指出的,直到Windows 8.1才添加/sleepstudy
命令。 / systempowerreport可能会代替。请注意,其中一些其他答案对我没有用,例如搜索事件日志始终缺少某些条目。在这方面,@ Florisz的答案也是正确的。这是我的解决方案:
在管理员cmd shell中,运行以下命令:
powercfg /sleepstudy /output sleepstudy.html
然后在浏览器中打开文件
sleepstudy.html
。最近三天,您将获得有关关机/重启/待机/休眠的惊人组织统计数据。 (因此,请根据需要定期运行)输出示例:(AFAIR,
Showdown (Hybrid)
表示快速启动)源/说明文件|也相关
评论
这就是我在Windows 10上寻找的东西!我不重启,我通常会关机。 LastBootTime仅指Windows 10上的重启。
–tbc0
18-10-25在14:34
#6 楼
在几乎任何版本的Windows上,您都可以检查交换文件上的时间戳。dir / a:h c:\ pagefile.sys
评论
我不这么认为。至少在Windows 10上,当我检查时,交换文件时间比引导时间新。
–tbc0
18年7月13日在17:30
#7 楼
要在PowerShell中获得它:Function Get-LastBoot {
if ($Host.Version.Major -lt 3) {
Get-WmiObject win32_operatingsystem | Select-Object CSname, @{n = 'LastBootUpTime'; e = {$_.ConverttoDateTime($_.lastbootuptime)}}
}
else {
Get-CimInstance -ClassName win32_operatingsystem | Select-Object CSname, LastBootUpTime
}
}
结果是:
CSname LastBootUpTime
------ --------------
LAPTOP1 2018-09-07 08:57:02
#8 楼
在Windows 7上,我更喜欢net statistics workstation
WMIC不考虑睡眠时间,因此我将工作站锁定在一周中处于工作状态的睡眠状态,准备唤醒第二天。
#9 楼
批处理文件中的另一种方法来获取wmic的启动时间,但以人类可读的形式:for /f %%a in ('WMIC OS GET lastbootuptime ^| find "."') DO set DTS=%%a
set BOOTTIME=%DTS:~0,4%-%DTS:~4,2%-%DTS:~6,2% %DTS:~8,2%:%DTS:~10,2%
echo DTS : %DTS%
echo BOOTTIME :%BOOTTIME%
输出:
DTS:20170308073729.491206 + 060
启动时间:2017-03-08 07:37
评论
如果它包括对设置的BOOTTIME如何工作的解释,则此答案会更好。
–用户
17-3-28在13:31
#10 楼
从类似的ServerFault问题中,搜索/过滤Windows系统事件日志中的事件ID6009
。在Windows 10上:Event Viewer > Windows Logs > System
,然后在Filter Current Log...
Action。#11 楼
您可以为此使用PowerShell。关闭
Get-WinEvent -LogName Microsoft-Windows-Diagnostics-Performance/Operational | Where { $_.Id -eq 200 }
这将为您提供记录的关闭时间列表。
替代命令,为远程连接进行了更好的优化:
Get-WinEvent -FilterHashtable @{LogName = "Microsoft-Windows-Diagnostics-Performance/Operational"; Id = 200; }
示例输出:
TimeCreated Id LevelDisplayName Message
----------- -- ---------------- -------
2017-01-28 18:25:46 200 Critical Windows has shutdown
2016-11-01 19:55:21 200 Error Windows has shutdown
2016-10-29 00:18:38 200 Critical Windows has shutdown
2016-10-26 23:16:55 200 Warning Windows has shutdown
2016-10-26 15:37:40 200 Warning Windows has shutdown
2016-10-26 02:18:24 200 Warning Windows has shutdown
2016-10-26 02:10:34 200 Warning Windows has shutdown
2016-10-26 02:04:01 200 Warning Windows has shutdown
2016-10-25 14:23:11 200 Warning Windows has shutdown
2016-10-25 13:07:46 200 Error Windows has shutdown
2016-10-25 00:18:12 200 Error Windows has shutdown
2016-10-19 13:16:39 200 Critical Windows has shutdown
启动
以下命令将为您提供已记录的启动时间列表。
Get-WinEvent -LogName Microsoft-Windows-Diagnostics-Performance/Operational | Where { $_.Id -eq 100}
替代命令,优化程度更高用于远程连接:
Get-WinEvent -FilterHashtable @{LogName = "Microsoft-Windows-Diagnostics-Performance/Operational"; Id = 100; }
示例输出:
TimeCreated Id LevelDisplayName Message
----------- -- ---------------- -------
2017-10-07 21:35:38 100 Critical Windows has started up
2017-01-28 18:25:48 100 Critical Windows has started up
2016-12-11 17:45:07 100 Critical Windows has started up
2016-11-16 13:26:52 100 Critical Windows has started up
2016-11-01 19:55:21 100 Critical Windows has started up
2016-10-29 00:18:39 100 Critical Windows has started up
2016-10-26 23:16:55 100 Error Windows has started up
2016-10-26 14:51:07 100 Error Windows has started up
2016-10-26 02:24:01 100 Error Windows has started up
2016-10-26 02:18:24 100 Critical Windows has started up
2016-10-26 02:10:34 100 Error Windows has started up
2016-10-26 02:04:01 100 Critical Windows has started up
2016-10-25 14:23:12 100 Error Windows has started up
2016-10-25 13:07:47 100 Error Windows has started up
2016-10-25 12:56:23 100 Error Windows has started up
2016-10-19 13:16:39 100 Critical Windows has started up
我已经在PowerShell 5.1和Windows上对此进行了测试10.0.15063。但是,只要您至少具有PowerShell 3.0,它就应该也可以在Windows 7上运行。请注意,您需要以admin身份运行它。
您将在此处找到该命令的完整文档:
docs.microsoft.com
评论
在Windows 10上对我不起作用。甚至没有管理员身份。参见snag.gy/HcEn8j.jpg
–tbc0
18年7月13日在17:27
#12 楼
几个答案都提到了net statistics workstation
,我注意到:net statistics server
和
net statistics workstation
都应该在
Statistics since ...
行上提供有关上次引导的数据。但是,某些操作系统版本(例如Svr2008 / 6.0)将在使用
1/1/1980 12:00
时返回server
作为日期。因此,我将默认设置为workstation
。还可以缩写一些命令,例如
net stats workstation
并获得相同的结果。最后,如果您从一个系统跳到另一个系统,则默认的CMD框不够大,无法显示该命令的所有结果。因此,我会将输出传递给more
,以避免向上滚动以查看启动时间。因此,我的默认命令是:net stats workstation | more
#13 楼
我想补充一点,所有这些命令确实为您提供了完成“重新启动”或“重新引导”的时间戳。而不是在关机和启动完成后。关闭并启动后,“ lastbootuptime”将反映系统真正“重新启动”的时间,而不是实际的启动时间。因此,关闭/启动所产生的结果与从Last / BootUpTime时间戳的挂起/休眠返回的结果相同。 。
#14 楼
与最大答案相同...for /f %%a in ('WMIC OS GET lastbootuptime ^| find "."') DO set DTS=%%a
set BOOTTIME=%DTS:~0,4%-%DTS:~4,2%-%DTS:~6,2% %DTS:~8,2%:%DTS:~10,2%
echo DTS : %DTS%
echo BOOTTIME :%BOOTTIME%
...但是在一个内衬中:
for /f %a in ('WMIC OS GET lastbootuptime ^| find "."') DO set DTS=%a && echo %DTS:~0,4%-%DTS:~4,2%-%DTS:~6,2% %DTS:~8,2%:%DTS:~10,2%
此wmi实现可能看起来有些混乱,但是与其他Powershell或systeminfo实现相比,它的运行速度非常快,并且由于代码中明确显示了格式,因此您可以轻松更改格式。
,谢谢您。
评论
@RoyiNamir:使用一些重新启动的Google搜索列表(看起来非常相似):Get-EventLog -LogName其中{($ _。InstanceId -bAnd 0xFFFF)-eq 6006}
–m0nhawk
2012年12月24日15:08
“启动时间”似乎在说谎。这是在上周五告诉我的,但是我知道自那以后我已经关闭了几次计算机。
– mpen
16-10-27在0:46
请注意,systeminfo已本地化。因此,“启动时间”仅适用于英文版Windows。
– Markus Mitterauer
17年5月3日在8:33
西班牙语国家/地区的本地化:systeminfo |在Windows西班牙语版本中找到/ i“ tiempo de arranque”。
– Sopalajo de Arrierez
18年2月27日在16:21
systeminfo |在德语中找到/ i“ Systemstartzeit”
–schoetbi
19年5月7日在13:05