PowerShell for Non-N00bs: System Uptime Via WMI
Getting the last time a system was rebooting is pretty easy from WMI. From this half-decade old post, we get the two key bits: the LastBootUptTimem property of the Win32_OperatingSystem WMI class. In PowerShell, it looks like this:
PSH> (Get-WmiObject -Query 'SELECT LastBootUpTime FROM Win32_OperatingSystem').LastBootUpTime
20090712112652.125000-420
The output is a little hard to read.
PSH> $lastBootUpTimeWMIObject = (Get-WmiObject -Query 'SELECT LastBootUpTime FROM Win32_OperatingSystem');
PSH> $lastBootUpTimeWMIObject.ConvertToDateTime($lastBootUpTimeWMIObject.LastBootUpTime);
Sunday, July 12, 2009 11:26:52 AM
Now, what if we want to see how long a system has been up, instead of when it was last booted up? It turns out Get-Date can accept many different formats.
PSH> $lastBootUpDate = Get-Date ($lastBootUpTimeWMIObject.ConvertToDateTime($lastBootUpTimeWMIObject.LastBootUpTime))
PSH> ((Get-Date) - (Get-Date $lastBootUpDate)).Days
103