function Measure-TimeSpan([TimeSpan]$Span, $Units=$Null) { switch ($Units) { "Weeks" {[Int]($Span.TotalDays / 7)} "Days" {[Int]$Span.TotalDays} "Hours" {[Int]$Span.TotalHours} "Minutes" {[Int]$Span.TotalMinutes} "Seconds" {[Int]$Span.TotalSeconds} "MilliSeconds" {[Int64]$Span.TotalMilliSeconds} "Ticks" {$Span.Ticks} default {$null} } } function Measure-Since([DateTime]$Time, $Units=$Null) { $Since = Measure-TimeSpan $([DateTime]::Now - $Time) $Units if ($Since -eq $null) { throw 'Usage: Measure-Since -Time -Units ["Weeks","Days","Hours","Minutes","Seconds","Milliseconds","Ticks"]' } else { $Since } } function Measure-Till([DateTime]$Time, $Units=$Null) { $Since = Measure-TimeSpan $($Time - [DateTime]::Now) $Units if ($Since -eq $null) { throw 'Usage: Measure-Till -Time -Units ["Weeks","Days","Hours","Minutes","Seconds","Milliseconds","Ticks"]' } else { $Since } } Set-Alias MSince Measure-Since Set-Alias MTill Measure-Till