powershellscripts/uptime.ps1
2025-11-06 16:28:28 -07:00

55 lines
1.4 KiB
PowerShell

Function Get-Uptime {
[CmdletBinding()]
Param (
[Parameter(
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true,
Position=0)]
[string[]]
$ComputerName = $env:COMPUTERNAME
)
BEGIN {}
PROCESS {
Foreach ($Computer in $ComputerName) {
$Computer = $Computer.ToUpper()
Try {
$OS = Get-WmiObject Win32_OperatingSystem -ComputerName $Computer -ErrorAction Stop
$Uptime = (Get-Date) - $OS.ConvertToDateTime($OS.LastBootUpTime)
[PSCustomObject]@{
ComputerName = $Computer
LastBoot = $OS.ConvertToDateTime($OS.LastBootUpTime)
Uptime = ([String]$Uptime.Days + " Days " + $Uptime.Hours + " Hours " + $Uptime.Minutes + " Minutes")
}
} catch {
[PSCustomObject]@{
ComputerName = $Computer
LastBoot = "Unable to Connect"
Uptime = $_.Exception.Message.Split('.')[0]
}
} finally {
$null = $OS
$null = $Uptime
}
}
}
END {}
}
$allComputers=Get-Content -Path C:\temp\pc.txt
foreach($computer in $allComputers)
{
$Reboots = Get-Uptime -ComputerName $computer
#Sorting by Lastboot time.
$Reboots | Sort-Object LastBoot
}