Powershell Script Metric

Es kommt ja immer wieder vor, dass man die Laufzeiten eines gesamten oder eben bestimmter Abschnitte innerhalb eines Skriptes messen will. Wenn man z.B. wissen will wie lange es dauert eine Datei zu durchsuchen oder Kopiervorgängen oder etc. In Powershell gibt es ein paar Möglichkeiten, um die Laufzeit Metric zu messen.

Man nimmt zwei Datumsobjekte, jeweils eins für den Start und eins für das Ende der Aktion und berechnet die Differenz zwischen beiden.

#snap the start time
$start=(GET-DATE)
 
#do something
sleep 5
 
#snap the finishing time
$end=(GET-DATE)
 
#calculate the difference
$duration = NEW-TIMESPAN –Start $startEnd $end
 
write-host "It took:$($duration.Seconds) sec"

Oder man nimmt das Stopwatch Objekt von System/Diagnostics

#create a new stop watch and start it immediatly
$stop_watch = [system.diagnostics.stopwatch]::startNew()
 
#do something
sleep 5
 
#look at the watch but continue
write-host "Script runtime: $($stop_watch.Elapsed.Hours):$($stop_watch.Elapsed.Minutes):$($stop_watch.Elapsed.Seconds):$($stop_watch.Elapsed.Milliseconds)"
 
#do something more
sleep 2
 
#stop the watch and look again
$stop_watch.stop()
write-host "Script final runtime: 
$($stop_watch.Elapsed.Hours):$($stop_watch.Elapsed.Minutes):$($stop_watch.Elapsed.Seconds):$($stop_watch.Elapsed.Milliseconds)"
http://www.agile-coding.net/powershell-script-metric/