Partager via


Measure-Command

Mesure le temps nécessaire pour exécuter des applets de commande et des blocs de script.

Syntax

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, timese l’exécution de l’opération et retourne l’heure d’exécution.

Notes

Les blocs de script exécutés par Measure-Command exécution dans l’étendue actuelle, et non 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 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 les fichiers du C:\Windows répertoire et de 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 ' spécifique au fournisseur.

Ces commandes montrent 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 : Canalisation d’une entrée vers Measure-Command

Les objets dirigés vers Measure-Command sont disponibles pour le bloc de script 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 des 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 des accolades ({}).

Type:ScriptBlock
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters: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 . À l’intérieur du bloc de script, $_ peut être utilisé pour référencer l’objet actuel dans le pipeline.

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

Entrées

PSObject

Vous pouvez diriger un objet vers Measure-Command.

Sorties

TimeSpan

Measure-Command retourne un objet d’intervalle de temps qui représente le résultat.