Partager via


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

PSObject

Vous pouvez diriger un objet vers cette applet de commande.

Sorties

TimeSpan

Cette applet de commande retourne un objet d’intervalle de temps représentant le résultat.