Le Timing d'une commande de l'exécution de PowerShell
Est-il un moyen simple de temps à l'exécution d'une commande PowerShell, comme le "temps" de commande sous Linux?
Je suis venu avec cette:
$s=Get-Date; .\do_something.ps1 ; $e=Get-Date; ($e - $s).TotalSeconds
Mais je voudrais quelque chose de plus simple comme
time .\do_something.ps1
Vous devez vous connecter pour publier un commentaire.
Yup.
Note qu'une légère baisse de Mesure-Commande est que vous ne voyez pas de stdout. Si vous voulez voir le résultat, vous pouvez utiliser le .NET Chronomètre objet, par ex.:
time { ping -n 1 google.com } -Samples 10
doit exécuter la commande10
temps et de retour à la moyenne, le minimum et le maximum de temps. Vous pouvez ajouter-Silent
à avaler la sortie standard STDOUT.$t = Measure-Command {<<your command or code block>>}
. L'essayer, puis tapez$t
à l'invite de voir vos résultats et toutes les propriétés que vous avez accès à l', comme$t.Milliseconds
,$t.TotalSeconds
, etc. Ensuite, nous pouvons écrire le résultat que nous voulons, par exemple,Write-Host That command took $t.TotalSeconds to complete.
Vous pouvez également obtenir la dernière commande de l'histoire et de soustraire son
EndExecutionTime
de sonStartExecutionTime
.Get-History | Group {$_.StartExecutionTime.Hour} | sort Count -desc
pour voir votre PowerShell modèle d'utilisation par heure de la journée. 🙂$command = Get-History -Count 1 ; "{0}" -f ($command.EndExecutionTime - $command.StartExecutionTime)
Utilisation
Measure-Command
Exemple
La pipe à
Out-Host
vous permet de voir la sortie de la commande, qui estsinon consommée par
Measure-Command
.ps
peut être n'importe quelle fonction définie par l'utilisateur.Measure-Command {<your command } | Out-Host
- l'Hôte est à l'extérieur du bloc de scriptSimples
peut utiliser comme
Vous pouvez ajuster la sortie
Measure-Command
cache de sortie de la commande, de sorte que cette solution est parfois mieux.Voici une fonction que j'ai écrit qui fonctionne de façon similaire à Unix
time
commande:Source: https://gist.github.com/bender-the-greatest/741f696d965ed9728dc6287bdd336874
Measure-Command
ou dans une des nombreuses autres façons que vous pouvez de temps d'exécution dans Powershell. Si vous lisez la question d'origine, il a demandé quelque chose qui fonctionne "comme letime
de commande sous Linux".Utilisation du Chronomètre et de la mise en forme du temps écoulé:
Des Exemples D'Utilisation
Measure-Command {echo "Good morning World!" | Write-Host}
Source - https://github.com/PowerShell/PowerShell/issues/2289#issuecomment-247793839