But actually there is a much better way.
By using the Stopwatch class (System.Diagnostics.Stopwatch) I get a measument by a single object in stead of two DateTime (System.DateTime) objects.
Also I can take a look at the stopwatch while it is running by the Elapsed property.
The result given is a TimeSpan (System.TimeSpan) object, and by reading the value with the ToString method it is very usefull.
The Stopwatch is created by calling the static method StartNew():
PS C:\> $mywatch = [System.Diagnostics.Stopwatch]::StartNew()
Stopping the stopwatch is
PS C:\> $mywatch.Stop()
Reading the stopwatch without formatting the answer is also quite simple:
PS C:\> $mywatch.Elapsed
Days : 0
Hours : 0
Minutes : 0
Seconds : 14
Milliseconds : 975
Ticks : 149755134
TotalDays : 0,000173327701388889
TotalHours : 0,00415986483333333
TotalMinutes : 0,24959189
TotalSeconds : 14,9755134
TotalMilliseconds : 14975,5134
Reading the stopwatch with standard formatting [HH:mm:ss.ddddddd] gives you the result more readable:
PS C:\> $mywatch.Elapsed.ToString()
00:15:02.9033008
I use it for execution times. On scripts for the entire script and some subtasks.