如何使用PowerShell获取系统运行时间?
要使用PowerShell获取Windows系统的运行时间,我们可以使用类名为Win32_OperatingSystem的CIM实例方法。一旦使用该类,就有一个名为LastBootupTime的属性,它显示计算机上次重启的日期。
示例
Get-CimInstance -ClassName Win32_OperatingSystem | Select LastBootUpTime
输出
LastBootUpTime -------------- 9/29/2020 8:12:08 AM
如果我们检查上述输出的数据类型,由于输出格式的原因,它应该是DateTime。
(Get-CimInstance -ClassName Win32_OperatingSystem).LastBootUpTime.Gettype()
输出
IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True DateTime System.ValueType
我们现在需要以天-小时-分钟的格式显示系统的运行时间。因此,我们将比较当前日期/时间与启动日期/时间之间的差异。
$bootuptime = (Get-CimInstance -ClassName Win32_OperatingSystem).LastBootUpTime $CurrentDate = Get-Date $uptime = $CurrentDate - $bootuptime $uptime
输出
Days : 6 Hours : 0 Minutes : 17 Seconds : 38 Milliseconds : 301 Ticks : 5194583016830 TotalDays : 6.01224886207176 TotalHours : 144.293972689722 TotalMinutes : 8657.63836138333 TotalSeconds : 519458.301683 TotalMilliseconds : 519458301.683
从输出中,我们可以看出服务器已经运行了6天17分钟。我们也可以将输出写成如下所示。
Write-Output "Server Uptime --> Days: $($uptime.days), Hours: $($uptime.Hours), Minutes:$($uptime.Minutes)"
输出
Server Uptime --> Days: 6, Hours: 0, Minutes:17
要在远程计算机上检查运行时间,请在命令中使用-ComputerName参数。例如,
$servers = "Test1-Win2k12","Test1-Win2k16","ADDC" $currentdate = Get-Date foreach($server in $servers){ $Bootuptime = (Get-CimInstance -ClassName Win32_OperatingSystem -ComputerName $server).LastBootUpTime $uptime = $currentdate - $Bootuptime Write-Output "$server Uptime : $($uptime.Days) Days, $($uptime.Hours) Hours, $($uptime.Minutes) Minutes" }
输出
Test1-Win2k12 Uptime : 5 Days, 22 Hours, 50 Minutes Test1-Win2k16 Uptime : 5 Days, 23 Hours, 12 Minutes ADDC Uptime : 6 Days, 2 Hours, 9 Minutes
广告