Introduction: checking uptime on Windows Server
How long has this server been running? It is one of the first questions after a patch day, an unplanned restart or a performance investigation. Windows Server answers it in several ways, from a quick look in Task Manager to a one-line PowerShell command you can run against a whole list of servers.
This guide shows four ways to check uptime on Windows Server, explains how to read the results, and covers the one thing OS uptime cannot tell you: whether your users can actually reach the services running on that server.

Method 1: Task Manager
The quickest windows server uptime check needs no command line:
- Press Ctrl + Shift + Esc to open Task Manager.
- Open the Performance tab and select CPU.
- Read the value next to Up time, shown as days, hours, minutes and seconds.
Method 2: PowerShell
PowerShell gives you the exact uptime and works well in scripts. Calculate the time since the last boot:
(Get-Date) - (Get-CimInstance -ClassName Win32_OperatingSystem).LastBootUpTimeThe result is a time span with days, hours, minutes and seconds. If you only need the boot time itself:
(Get-CimInstance -ClassName Win32_OperatingSystem).LastBootUpTimeIn PowerShell 7, the built-in Get-Uptime cmdlet returns the same information, and Get-Uptime -Since returns the boot time.
Check server uptime on remote machines
To check server uptime for several servers at once, query them remotely. The servers must accept CIM connections (WinRM) from your machine:
Get-CimInstance -ComputerName SRV01, SRV02 -ClassName Win32_OperatingSystem |
Select-Object PSComputerName, LastBootUpTimeMethod 3: systeminfo in the Command Prompt
The classic command-line tool shows the boot time together with other system details:
systeminfo | find "System Boot Time"On a localized Windows installation, the label is translated (for example Systemstartzeit on a German system), so adjust the search text. Alternatively, net statistics workstation shows a “Statistics since” line, which reflects the time the workstation service started at boot.
Method 4: Event Viewer
Event Viewer shows not only when the server started, but also how it stopped. Open Event Viewer → Windows Logs → System and filter for these Event IDs:
| Event ID | Meaning |
|---|---|
| 6005 | The event log service started, logged at every boot |
| 6006 | The event log service stopped, which marks a clean shutdown |
| 6008 | The previous shutdown was unexpected |
| 6013 | The system uptime in seconds, usually logged once a day |
The same events are available in PowerShell, which makes it easy to review the last restarts:
Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 6005, 6006, 6008 } -MaxEvents 10 |
Select-Object TimeCreated, Id, MessageA note on Windows 10 and 11: Fast Startup
If you check uptime on a Windows client and the value is surprisingly high, Fast Startup is the likely reason: it hibernates the kernel instead of shutting it down completely, so the uptime counter continues after a shutdown. A restart always resets it.
Server uptime vs availability
Uptime on Windows Server tells you how long the operating system has been running. It does not tell you whether your users can work. A server can show 120 days of uptime while:
- an IIS application pool has stopped and the website returns errors,
- an SSL certificate has expired and browsers show a warning,
- a firewall rule or DNS change makes a service unreachable from outside,
- a scheduled backup task has quietly stopped running.
Each of these is easy to fix once you know about it. The key is to measure availability the way your users experience it: from the outside.
Monitor Windows Server availability from the outside
External monitoring complements OS uptime with the view that matters to your users:
- HTTP(S) and keyword checks confirm that websites and web applications respond with the expected content.
- TCP and ping checks confirm that the ports and services you expose are reachable.
- SSL certificate checks report upcoming expiry dates well in advance.
- Heartbeat checks confirm that scheduled tasks actually ran.
Add a heartbeat to a Task Scheduler job
Scheduled tasks run quietly in the background. With a heartbeat, a task reports in after every successful run, and a missing check-in becomes an alert. Add one line to the end of your script, using the heartbeat URL from your monitor:
& C:\Scripts\backup.ps1
if ($LASTEXITCODE -eq 0) {
Invoke-RestMethod -Uri "https://your-heartbeat-url"
}How TrustComponent Monitoring helps
TrustComponent Monitoring provides server uptime monitoring from the outside, with no agent to install on your Windows servers:
- 16 check types, including HTTP(S), keyword, ping, TCP, SSL certificate and heartbeat checks
- Checks as often as every 30 seconds, from multiple locations
- Alerts by email, SMS, voice call, Slack, Teams and more, with escalation chains until someone takes ownership
- Uptime reports and a status page that show your availability to customers and colleagues
Conclusion
Checking uptime on Windows Server takes seconds: Task Manager for a quick look, PowerShell for scripts and remote servers, Event Viewer for the history of starts and shutdowns. Combine it with external monitoring, and you know both how long your servers have been running and whether your services are available.
Get started
👉 Start a free trial of TrustComponent Monitoring and add your first server checks in minutes.


