PowerShell获取系统的开机时间 2


在PowerShell如何获取系统的开机时间我在这个帖子中已经分享过了:https://www.pstips.net/question/4776.html

今天再分享一个更高效的方式,就是environment中的TickCount值。

PS> [timespan]::FromMilliseconds([environment]::TickCount)

Days              : 0
Hours             : 0
Minutes           : 6
Seconds           : 47
Milliseconds      : 781
Ticks             : 4077810000
TotalDays         : 0.0047196875
TotalHours        : 0.1132725
TotalMinutes      : 6.79635
TotalSeconds      : 407.781
TotalMilliseconds : 407781

这6分多钟是怎么来的,机器更新了驱动,然后我正好借着系统重启的时间去洗了下袜子。登录系统后第一时间就来验证这个TickCount。

其实这样获取的值和wmi获取的值是一致的,不信我帮你再对比下:

PS C:\Users\libao> (Get-WmiObject -class Win32_OperatingSystem).lastbootuptime
20151019224139.498206+480
PS C:\Users\libao> [datetime]::Now.AddMilliseconds(-([environment]::TickCount))

2015年10月19日, 星期一 22:41:39

分析对比

  1. Environment中的TickCount:速度快,不支持远程。
  2. Win32_OperatingSystem和lastbootuptime:速度慢,支持远程。

其实关注这个问题很久了,主要的原因是2015年10月17日我尝试使用这个方法发现我的上次开机时间为2015年10月12日,时间差了5天(俺每天都关机奥,电费贵啊),我曾一度怀疑这是个bug。

最后发现这样的奇葩问题只出现在windows 8以后了,因为从win8开始微软开机做了优化,默认关机其实是关掉用户当前的profile信息,但是系统是硬盘休眠状态。

从这个意义上来讲:windows 8以后的 系统上使用这种方法获取开机时间几乎然并卵了。

本文链接: https://www.pstips.net/get-update-time.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

2 条评论 “PowerShell获取系统的开机时间