PowerShell 技能连载 - 获取系统开机时长
适用于 PowerShell 所有版本
Windows 每次启动的时候,都启动一个高精度计数器,这个计数器将返回系统运行的毫秒数:
$millisecondsUptime = [Environment]::TickCount
"I am up for $millisecondsUptime milliseconds!"
由于您很难对毫秒有兴趣,所以请使用 New-TimeSpan
来将毫秒(顺便提一下,也可以是任何其它时间间隔)转换为有意义的单位:
$millisecondsUptime = [Environment]::TickCount
"I am up for $millisecondsUptime milliseconds!"
$timespan = New-TimeSpan -Seconds ($millisecondsUptime/1000)
$timespan
那么现在,您可以使用 TimeSpan 型的 $timespan
对象以您想要的任何格式来汇报启动的时间:
$millisecondsUptime = [Environment]::TickCount
"I am up for $millisecondsUptime milliseconds!"
$timespan = New-TimeSpan -Seconds ($millisecondsUptime/1000)
$hours = $timespan.TotalHours
"System is up for {0:n0} hours now." -f $hours
由于 New-TimeSpan
无法直接处理毫秒,所以需要做一个特殊处理。该脚本直接将毫秒数除以 1000,会引入一个小误差。
要将毫秒数转换为一个 TimeSpan
对象而不损失任何精度,请试试以下代码:
$timespan = [Timespan]::FromMilliseconds($millisecondsUptime)
在这个例子中,它们没有区别。但是它在其它情况下可能很有用。例如,您还可以使用 FromTicks()
方法将时钟周期数(Windows 系统中的最小时间周期单位)转换为时间间隔。
PowerShell 技能连载 - 获取系统开机时长