How can I find a Windows server's last reboot time, apart from 'net statistics server/workstation'?
- In fact, net statistics does not seem to be showing the system boot time. windows-commandline.com/windows-last-boot-time/#comment-24721Giri– Giri2015-08-07 04:35:46 +00:00Commented Aug 7, 2015 at 4:35
- see also superuser.com/a/909172/33303 if you are interested in other acpi states like hibernation and standbyJanus Troelsen– Janus Troelsen2016-11-17 12:40:54 +00:00Commented Nov 17, 2016 at 12:40
11 Answers
Start → Run → cmd.exe:
systeminfo | find "System Boot Time" Or for older OS versions (see comment):
systeminfo | find "System Up Time" - 9Works in Windows XP and I would assume Windows Server 2003, but doesn't work on Windows 2008 as it is now "System Boot Time".steve.lippert– steve.lippert2010-07-12 14:53:22 +00:00Commented Jul 12, 2010 at 14:53
- This only works with English locale, see @user47994 for a language independent solutionooxi– ooxi2015-07-06 08:22:56 +00:00Commented Jul 6, 2015 at 8:22
- "System Boot Time" works for Windows Server 2012 R2TheCrazyProgrammer– TheCrazyProgrammer2017-04-17 17:11:32 +00:00Commented Apr 17, 2017 at 17:11
- 2systeminfo | find /i "Boot Time"Gaurav– Gaurav2017-08-11 06:07:51 +00:00Commented Aug 11, 2017 at 6:07
- 2And, this works remotely! systeminfo /s servername | ...David Rogers– David Rogers2017-08-14 14:58:39 +00:00Commented Aug 14, 2017 at 14:58
Filter the System Event Log for Event ID 6009.
- 4This is especially nice because if you keep a large enough event log, you will have a history of many previous reboots.David– David2010-07-12 14:48:14 +00:00Commented Jul 12, 2010 at 14:48
open up the powershell command and run this to see all your history ... and no UI necessary :-)
get-eventlog System | where-object {$_.EventID -eq "6005"} | sort -desc TimeGenerated - works in Powershell 5, doesn't work in cross-platform Powershell 7+ for obvious reasonscodeulike– codeulike2025-05-05 12:37:35 +00:00Commented May 5 at 12:37
I use the PsInfo utility from Microsoft's Sysinternals package, which will give you output like this:
PsInfo v1.77 - Local and remote system information viewer Copyright (C) 2001-2009 Mark Russinovich Sysinternals - www.sysinternals.com System information for \\JEFF-DELL: Uptime: 0 days 0 hours 33 minutes 27 seconds Kernel version: Microsoft Windows XP, Multiprocessor Free Product type: Professional Product version: 5.1 Service pack: 3 Kernel build number: 2600 Registered organization: Registered owner: IE version: 8.0000 System root: C:\WINDOWS Processors: 2 Processor speed: 2.3 GHz Processor type: Intel(R) Core(TM)2 Duo CPU E6550 @ Physical memory: 3316 MB Video driver: Live Mesh Remote Desktop Mirror Driver - 5
psinfo uptimewill display just the uptime.Dennis Williamson– Dennis Williamson2010-07-12 15:43:24 +00:00Commented Jul 12, 2010 at 15:43 -
psinfowould in theory be a great solution, because I use SysInternals Suite anyway. But on my (German) Windows 10 Pro, even the latest version always displays "Error reading uptime".kriegaex– kriegaex2025-02-13 04:11:32 +00:00Commented Feb 13 at 4:11
If you are using Server 2008, you can see the system uptime in hours on the "Task Manager" - "Performance" tab. As far as I know, the "net statistics ..." way is the only true way on Windows 2003.
- nice never knew that was thereNULL.Dude– NULL.Dude2018-10-18 19:14:40 +00:00Commented Oct 18, 2018 at 19:14
Using a wmi client.
C:\>wmic OS GET CSName,LastBootUpTime CSName LastBootUpTime SERVER 20101124084714.500000-360 Note: -360 = GMT-6
Last Time the System Booted
My personal favorite is to use WMI and Win32_OperatingSystem properties/methods. Here it is as an easy copy/paste one liner:
((Get-WmiObject Win32_OperatingSystem).ConvertToDateTime((Get-WmiObject Win32_OperatingSystem).LastBootUpTime)) Same thing, but easier for manual typing:
$obj = Get-WmiObject Win32_OperatingSystem $obj.ConvertToDateTime($obj.LastBootUpTime) Both options provide output like:
Monday, June 30, 2014 11:59:50 AM Length of System Up Time
If you want to find out how long the system has been online you can do this (this is also an alternate code style):
$Obj = Get-WmiObject -Class Win32_OperatingSystem $Obj.ConvertToDateTime($Obj.LocalDateTime) - $Obj.ConvertToDateTime($Obj.LastBootUpTime) Which gives output like:
Days : 7 Hours : 1 Minutes : 59 Seconds : 42 Milliseconds : 745 Ticks : 6119827457690 TotalDays : 7.08313363158565 TotalHours : 169.995207158056 TotalMinutes : 10199.7124294833 TotalSeconds : 611982.745769 TotalMilliseconds : 611982745.769 - works in Powershell 5, doesn't work in cross-platform Powershell 7+ for obvious reasonscodeulike– codeulike2025-05-05 12:37:43 +00:00Commented May 5 at 12:37
Using Powershell
Get-CimInstance -ClassName win32_operatingsystem | select csname, lastbootuptime CSName LastBootUpTime Server 7/5/2014 6:00:00 AM You can easily open your task manager in performance tab under System find your "UpTime"!!!
Since the last boot time is for troubleshooting a useful information, we automaticalley display it on every server as background wallpaper
Howto
- Using Bginfo (Microsoft / Sysinternals)
- Configure the wanted information
- Run as scheduled task:
- command line:
Bginfo64.exe /silent /nolicprompt /timer:0 - trigger: on every user logon
- command line:
Following gives history of shutdown dates.
Refer How to get the list of shutdown event with date?
Filtering the System events with the event id 1074 in Eventvwr.exe helped me

