# encoding: ascii
# api: powershell
# title: Get-Uptime
# description: Function to report uptimes for single/multiple hosts as objects. Useful if not very original.
# version: 1.00
# type: function
# author: 81stPerson
# license: CC0
# function: Get-Uptime
# x-poshcode-id: 4136
# x-archived: 2013-06-19T16:32:32
# x-published: 2013-04-29T13:32:00
#
#
Function Get-Uptime {
<#
.SYNOPSIS 
	Displays Uptime since last reboot
.PARAMETER  Computername
.EXAMPLE
 Get-Uptime Server1
.EXAMPLE
 "Server1", "Server2"|Get-Uptime
.EXAMPLE
 (Get-Uptime Sever1)."Time Since Last Reboot"
#>
 [CmdletBinding()]
 Param (
 [Parameter(Mandatory=$True,ValueFromPipeline=$true,Position=0)]
	[STRING[]]$Computername
	)

 Begin {Write-Verbose "Version 1.00"}
	
 Process {
 	$Now=Get-Date
 	$LastBoot=[System.Management.ManagementDateTimeConverter]::ToDateTime((Get-WmiObject win32_operatingsystem -ComputerName $computername).lastbootuptime)
 	$Result=@{ "Server"=$($Computername);
 	    	   "Last Reboot"=$LastBoot;
 	    	   "Time Since Reboot"="{0} Days {1} Hours {2} Minutes {3} Seconds" -f ($Now - $LastBoot).days, `
 			($Now - $LastBoot).hours,($Now - $LastBoot).minutes,($Now - $LastBoot).seconds}
 	Write-Output (New-Object psobject -Property $Result|select Server, "Last Reboot", "Time Since Reboot")
 	}
}
