在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
分析对比,
- Environment中的TickCount:速度快,不支持远程。
- 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
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
那windows 8以后的系统怎样才可以获取到正确的开机时间
获取不到了,因为按照微软的默认设置,系统永远不会“真正”关机了。