微软有一个很好的命令行工具uptime.exe: http://www.microsoft.com/downloads/details.aspx?FamilyID=BC18FFDB-D6FE-400B-B892-94783AE44C91&displaylang=en
这个工具的好处是它的工作速度非常快。
Uptime [server] [/s] [/a] [/d:mm/dd/yyyyyy | /p:n] [/heartbeat] [/? 仅计算mm/dd/yyyy年之后的事件。 /heartbeat 打开/关闭系统的心跳 /? 基本用法。 /help 附加用法信息。
在 Windows 7 / Windows Server 2008 及以上版本中,这些信息会显示在任务管理器中的 “性能选项卡 "下。
这比使用命令行更快捷,而且在WMI问题导致无法运行systeminfo的情况下也能发挥作用。
使用PowerShell的SYSTEMINFO
对于喜欢使用PowerShell的朋友,可以使用上面的答案,将systeminfo
封装在PowerShell函数中,得到服务器最后一次启动的时间*结果。
function Get-ComputerBootTime {
param($ComputerName = (hostname))
$SystemInfo = & systeminfo /s $ComputerName | Select-String "System Boot Time")
if($SystemInfo -match "[\d/]+,\s+\S+"){
return (Get-Date $matches[0])
}
}
[PS]> $BootTime = Get-ComputerUptime -ComputerName MYSERVER
然后调用函数,例如:
[PS]> $UpTime = (Get-Date) - $BootTime
要得到服务器的启动时间,可以与当前时间进行比较:
[PS]> $UpTime.TotalDays
14.1827364
这是一个DateTime
,其中包含了TimeSpan
的属性,例如:
&001
有时其他的正常运行时间命令显示的时间不正确,所以我用这个命令来显示LOGON TIME
query USER
或更短的偶数:
quser
,打印出的结果是:
C:\Users\eflorinescu>query USER
USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME
>eflorinescu console 2 Active 2+23:44 5/7/2018 8:25 AM