45

What is the simplest way to find out how long a computer is turned on Windows?

56
  • Run command line
  • Type Systeminfo
  • Find "System Boot Time"

    Days: 10 Hours: 10 Minutes: 10 Seconds: 10

For shorter result you can use:

systeminfo | find "Boot Time" 
| improve this answer | |
  • 9
    >systeminfo | find "Boot Time" – svandragt Jul 23 '09 at 9:18
  • 2
    for me the simplest way now is > systeminfo | find "Up Time" – Juozas Kontvainis Jul 23 '09 at 9:29
  • 3
    Doesn't work on Vista (use already included uptime.exe instead). – mwore Jul 23 '09 at 12:50
  • 3
    Also note you can use this to query a remote machine as systeminfo /S *machinename*` | find "Up Time"` – GAThrawn Oct 14 '09 at 10:41
  • 3
    On Windows 7, it shows "System Boot Time" but not "System Up Time". – Keith Thompson Dec 28 '11 at 22:20
14

there is great command line tool from Microsoft uptime.exe:

http://www.microsoft.com/downloads/details.aspx?FamilyID=BC18FFDB-D6FE-400B-B892-94783AE44C91&displaylang=en

good thing with this tool is it works really fast.

Uptime [server] [/s ] [/a] [/d:mm/dd/yyyy | /p:n] [/heartbeat] [/? | /help]
server Name or IP address of remote server to process.
/s Display key system events and statistics.
/a Display application failure events (assumes /s).
/d: Only calculate for events after mm/dd/yyyy.
/p: Only calculate for events in the previous n days.
/heartbeat Turn on/off the system's heartbeat
/? Basic usage.
/help Additional usage information.

| improve this answer | |
12

Open the command prompt and type:

net stats srv | find "Statistics"

Example output:

>net stats srv | find "Statistics"
Server Statistics for \\4IFS-SANDER
Statistics since 22/07/2009 10:14:14

Source (MS KB).

Edit: Actually this will tell you the date and time when the pc was up from, not the duration.

| improve this answer | |
  • I'm not sure if this info is correct now, when I use MicTech's and KovBal's solution I get this: >systeminfo | find "Boot Time" System Boot Time: 23/07/2009, 02:22:27 – svandragt Jul 23 '09 at 9:17
  • On Vista it returns "Statistics since 1.1.1980 00:00:00" (use already included uptime.exe instead) – mwore Jul 23 '09 at 12:52
  • Returns bogus information just like systeminfo. It's returning a time that I know for a fact the machine last restarted. But then later that night it was turned off and turned back on this morning. Yet it's returning the last restarted time. 5 bucks says a month from now it'll report the uptime is a month long. Lots of machines on my network show many months of uptime which is all bogus. They're shut off at the end of the day. – Justin Emlay Dec 13 '18 at 22:45
  • @JustinEmlay are your machines sleeping, hibernated, or shut down? What version of Windows are you using? – mwfearnley Jul 2 '19 at 7:46
  • Windows 10 LTSC 2019. I found the issue. Windows 10 no longer shuts down nor restarts properly. By design. It uses some funky hybrid sleep mode. This also makes it so Windows doesn't properly reset "pending reboot" states. The option to turn it off was in Power Plan Options for one quick version of Windows 10 but then they removed it. Only way to turn it off is through registry. Anyway, this is why so many people are having issues. Local Machine - SYSTEM\CurrentControlSet\Control\Session Manager\Power - HiberbootEnabled - 0 – Justin Emlay Jul 2 '19 at 16:16
8

On Windows 7 / Windows Server 2008 and above, this information is displayed in task manager under the "Performance tab".

This can be quicker then using the command line and works in cases where you might have WMI issues preventing you from running systeminfo.

where to find uptiem

If you need to find this remotely, you could also run

systeminfo /s SERVERNAME | find "Time:"

from the command line.

| improve this answer | |
  • On Windows 7 / SP1 and 2008 / R2, yes. Not on higher level OS (8, 8.1, 10) – BlueCompute Mar 10 '16 at 11:18
  • 1
    I have just tested Windows 8.1 (Pro), 2012 and 2016 - what I had to hand. It is there on all three. You have to click "More details", and look on the Performance tab. – mwfearnley Jun 1 '17 at 7:47
  • And click on the CPU within the performance tab. Just bitten by this :-) – Cameron Oct 19 '17 at 14:35
  • Bogus information. I turned my machine on this morning yet it says my Up Time is over 13 days. – Justin Emlay Dec 13 '18 at 22:47
6

Following command gives last reboot time for a remote system:

systeminfo /s server_name | find "System Boot Time"
| improve this answer | |
3

If you have the Windows Server 2000 or 2003 resource kits try

srvinfo -ns [\\\server] | Findstr "Time"

Note: Srvinfo.exe will not run on a 64-bit versions of Windows, due to it being 16-bit.

| improve this answer | |
3

Using SYSTEMINFO with PowerShell

For those who like using PowerShell, you can use the answer(s) above and wrap systeminfo in a PowerShell function to get a DateTime result for when the server last booted:

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])
  }
}

And then call the function, for example:

[PS]> $BootTime = Get-ComputerUptime -ComputerName MYSERVER

To get the Uptime for the server, you compare with the current time:

[PS]> $UpTime = (Get-Date) - $BootTime

This is a TimeSpan, which includes properties such as TotalDays:

[PS]> $UpTime.TotalDays
14.1827364
| improve this answer | |
2

Sometimes the other uptime command display a time that is not correct so I use this command to display the LOGON TIME

query USER

or shorter even:

quser

which prints something like:

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
| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.