Mesurer la durée d'exécution d'un script PowerShell
Quand vous avez des scripts PowerShell qui demandent un certains temps d’exécution, vous avez besoin d’avoir une estimation précise pour planifier une exécution.
Measure-Command est la commande la plus simple.
PS C:>Measure-Command { .monScript.ps1 }
Days : 0
Hours : 0
Minutes : 0
Seconds : 0
Milliseconds : 257
Ticks : 2576708
TotalDays : 2,98230092592593E-06
TotalHours : 7,15752222222222E-05
TotalMinutes : 0,00429451333333333
TotalSeconds : 0,2576708
TotalMilliseconds : 257,6708
Le désavantage de cette commande est que vous ne voyez plus la sortie standard à moins d’utiliser l’astuce suivante.
#Afficher l'exécution
PS C:> Measure-Command { .monScript.ps1 | Out-Default }
#Loguer l'éxécution
PS C:> Start-Transcript ts-monScript.txt
PS C:> Measure-Command { .monScript.ps1 | Out-Default }
PS C:> Stop-Transcript
Vous en conviendrez, Measure-Command n’est plus vraiment adaptée. Pour être simple et efficace, vous préfèrerez l’objet .net Stopwatch.
Start-Transcript ts-monScript.txt
$sw = [Diagnostics.Stopwatch]::StartNew()
#contenu de monScript.ps1
$sw.Stop()
$sw.Elapsed
Stop-Transcript
Vous avez maintenant la possibilité de créer simplement des scripts dont toute l’exécution est tracée et minutée.
Références: