Recently I learned how to use timers in PowerShell scripts to track how long an operation is taking. I’ve started adding the below snippet to all of my long-running scripts so that when they’ve finished I can get a sense of how long it actually took.
The snippet has two parts:
- Start the timer
- Stop the timer and report on the duration
# Start the Timer
[DateTime]$ScriptStartTime = Get-Date
# Do stuff (script body)
<#
Chris's Fun End-of-Script Timing Snippet
#>
$ScriptEndTime = Get-Date
$ScriptDuration = New-TimeSpan -Start $ScriptStartTime -End $ScriptEndTime
Write-Host @"
Start Time: $($ScriptStartTime.ToShortDateString()) $($ScriptStartTime.ToShortTimeString())
End Time: $($ScriptEndTime.ToShortDateString()) $($ScriptEndTime.ToShortTimeString())
Total Seconds: $($ScriptDuration.TotalSeconds)
Total Minutes: $($ScriptDuration.Totalminutes)
Total Hours: $($ScriptDuration.TotalHours)
"@ -ForegroundColor Magenta