我怎么知道我最近一次重新启动运行Windows 7的计算机的时间?
我更喜欢一种不涉及搜索事件日志的解决方案,而是类似wmic
或什至是cmd
命令的搜索方案。
我怎么知道我最近一次重新启动运行Windows 7的计算机的时间?
我更喜欢一种不涉及搜索事件日志的解决方案,而是类似wmic
或什至是cmd
命令的搜索方案。
Answers:
systeminfo
命令几乎是您所需要的。在英语Windows 7上,您还可以执行以下操作:
systeminfo | find /i "Boot Time"
或在WMIC的帮助下:
wmic os get lastbootuptime
Windows 7和Windows XP之间的主要区别在于Windows 7 Microsoft仅显示最后一次启动时间。
同样在任务管理器中:
Get-EventLog -LogName System | where { ($_.InstanceId -bAnd 0xFFFF) -eq 6006 }
systeminfo
是本地化的。因此"Boot Time"
,仅适用于英文版Windows。
systeminfo | find /i "Systemstartzeit"
对于德国人
执行此操作的另一种方法是使用在Windows XP和Windows 7中都可以使用的以下命令行:
net statistics workstation
它的优点是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。
重要说明:此方法确定计算机的上次启动时间,而不是正常运行时间。如果您使用睡眠/休眠模式,这两个数字将有所不同。
wmic
Task Manager systeminfo
似乎都从当前时间倒数了PC的滴答数。运行。但是,如果像我一样使计算机大量进入睡眠(或休眠)状态,则实际总运行时间将比自上次启动以来的时间(在过去几个月中,本机仅30天)少得多。该计算完全。
这是课程的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
我认为我需要该死的计算器来计算时间
CIM_DATETIME
,这是标准要求的格式。它yyyymmddHHMMSS.mmmmmmsUUU
采用24小时时间。在这里,您的最后一次重启时间是2012年12月17日下午5:58。 msdn.microsoft.com/en-us/library/windows/desktop/…–
请注意,正如Alex所指出的,该/sleepstudy
命令直到Windows 8.1才添加。/ systempowerreport可能可以代替。
请注意,这些其他答案中的某些对我从未有用,例如搜索事件日志总是缺少某些条目。在这方面,@ Florisz的答案也是正确的。这是我的解决方案:
在管理员cmd shell中,运行以下命令:
powercfg /sleepstudy /output sleepstudy.html
然后sleepstudy.html
在浏览器中打开文件。最近三天,您将获得有关关机/重启/待机/休眠的惊人组织的统计信息。(因此,如果需要,请定期运行)
输出示例:(AFAIR,Showdown (Hybrid)
表示快速启动)
批处理文件中的另一种获取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
set BOOTTIME
工作原理的解释,则此答案会更好。
要在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
从类似的ServerFault问题中,搜索/过滤Windows系统事件日志中的事件ID 6009
。
在Windows 10上:Event Viewer > Windows Logs > System
然后Filter Current Log...
单击操作。
您可以为此使用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上运行。请注意,您需要以管理员身份运行它。
您可以在这里找到该命令的完整文档: docs.microsoft.com
提到了几个答案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
与最大答案相同...
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实现相比,它的速度非常快,而且由于在代码中是显式的,因此您可以轻松更改格式。
谢谢麦克斯。