Measure-Command
Mesure le temps nécessaire pour exécuter des applets de commande et des blocs de script.
Syntaxe
Measure-Command
[-InputObject <PSObject>]
[-Expression] <ScriptBlock>
[<CommonParameters>]
Description
L’applet Measure-Command
de commande exécute un bloc de script ou une applet de commande en interne, temps l’exécution de l’opération et retourne l’heure d’exécution.
Remarque
Les blocs de script s’exécutent par Measure-Command
exécution dans l’étendue actuelle, et non dans une étendue enfant.
Exemples
Exemple 1 : Mesurer une commande
Cet exemple mesure le temps nécessaire à l’exécution d’une Get-EventLog
commande qui obtient les événements dans le journal des événements Windows PowerShell.
Measure-Command { Get-EventLog "windows powershell" }
Exemple 2 : Comparer deux sorties à partir de Measure-Command
La première commande mesure le temps nécessaire pour traiter une commande récursive Get-ChildItem
qui utilise le paramètre Path pour obtenir uniquement .txt
des fichiers dans le C:\Windows
répertoire et ses sous-répertoires.
La deuxième commande mesure le temps nécessaire pour traiter une commande récursive Get-ChildItem
qui utilise le paramètre Filter spécifique au fournisseur.
Ces commandes affichent la valeur de l’utilisation d’un filtre spécifique au fournisseur dans les commandes PowerShell.
Measure-Command { Get-ChildItem -Path C:\Windows\*.txt -Recurse }
Days : 0
Hours : 0
Minutes : 0
Seconds : 8
Milliseconds : 618
Ticks : 86182763
TotalDays : 9.9748568287037E-05
TotalHours : 0.00239396563888889
TotalMinutes : 0.143637938333333
TotalSeconds : 8.6182763
TotalMilliseconds : 8618.2763
Measure-Command {Get-ChildItem C:\Windows -Filter "*.txt" -Recurse}
Days : 0
Hours : 0
Minutes : 0
Seconds : 1
Milliseconds : 140
Ticks : 11409189
TotalDays : 1.32050798611111E-05
TotalHours : 0.000316921916666667
TotalMinutes : 0.019015315
TotalSeconds : 1.1409189
TotalMilliseconds : 1140.9189
Exemple 3 : Piping input to Measure-Command
Les objets qui sont redirigés vers Measure-Command
sont disponibles pour le bloc de script qui est passé au paramètre Expression . Le bloc de script est exécuté une fois pour chaque objet sur le pipeline.
# Perform a simple operation to demonstrate the InputObject parameter
# Note that no output is displayed.
10, 20, 50 | Measure-Command -Expression { for ($i=0; $i -lt $_; $i++) {$i} }
Days : 0
Hours : 0
Minutes : 0
Seconds : 0
Milliseconds : 12
Ticks : 122672
TotalDays : 1.41981481481481E-07
TotalHours : 3.40755555555556E-06
TotalMinutes : 0.000204453333333333
TotalSeconds : 0.0122672
TotalMilliseconds : 12.2672
Exemple 4 : Affichage de la sortie de la commande mesurée
Pour afficher la sortie de l’expression dans Measure-Command
vous pouvez utiliser un canal vers Out-Default
.
# Perform the same operation as above adding Out-Default to every execution.
# This will show that the ScriptBlock is in fact executing for every item.
10, 20, 50 | Measure-Command -Expression {for ($i=0; $i -lt $_; $i++) {$i}; "$($_)" | Out-Default }
10
20
50
Days : 0
Hours : 0
Minutes : 0
Seconds : 0
Milliseconds : 11
Ticks : 113745
TotalDays : 1.31649305555556E-07
TotalHours : 3.15958333333333E-06
TotalMinutes : 0.000189575
TotalSeconds : 0.0113745
TotalMilliseconds : 11.3745
Exemple 5 : Mesure de l’exécution dans une étendue enfant
Measure-Command
exécute le bloc de script dans l’étendue actuelle, afin que le bloc de script puisse modifier des valeurs dans l’étendue actuelle. Pour éviter les modifications apportées à l’étendue actuelle, vous devez encapsuler le bloc de script dans les accolades ({}
) et utiliser l’opérateur d’appel (&
) pour exécuter le bloc dans une étendue enfant.
$foo = 'Value 1'
$null = Measure-Command { $foo = 'Value 2' }
$foo
$null = Measure-Command { & { $foo = 'Value 3' } }
$foo
Value 2
Value 2
Pour plus d’informations sur l’opérateur d’appel, consultez about_Operators.
Paramètres
-Expression
Spécifie l'expression à chronométrer. Placez l’expression dans les accolades ({}
).
Type: | ScriptBlock |
Position: | 0 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-InputObject
Les objets liés au paramètre InputObject sont des entrées facultatives pour le bloc de script passé au paramètre Expression . Dans le bloc de script, $_
vous pouvez l’utiliser pour référencer l’objet actuel dans le pipeline.
Type: | PSObject |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
Entrées
Vous pouvez diriger un objet vers cette applet de commande.
Sorties
Cette applet de commande retourne un objet d’intervalle de temps représentant le résultat.