Compartir a través de


Measure-Command

Mide el tiempo que tardan en ejecutarse los cmdlets y los bloques de script.

Sintaxis

Measure-Command
       [-InputObject <PSObject>]
       [-Expression] <ScriptBlock>
       [<CommonParameters>]

Description

El Measure-Command cmdlet ejecuta un bloque de script o un cmdlet internamente, tiempo de ejecución de la operación y devuelve el tiempo de ejecución.

Nota:

Los bloques de script que se ejecutan mediante Measure-Command la ejecución en el ámbito actual, no en un ámbito secundario.

Ejemplos

Ejemplo 1: Medir un comando

En este ejemplo se mide el tiempo necesario para ejecutar un Get-EventLog comando que obtiene los eventos en el registro de eventos de Windows PowerShell.

Measure-Command { Get-EventLog "windows powershell" }

Ejemplo 2: Comparar dos salidas de Measure-Command

El primer comando mide el tiempo necesario para procesar un comando recursivo Get-ChildItem que usa el parámetro Path para obtener solo .txt los archivos del C:\Windows directorio y sus subdirectorios.

El segundo comando mide el tiempo necesario para procesar un comando recursivo Get-ChildItem que usa el parámetro Filter específico del proveedor.

Estos comandos muestran el valor de usar un filtro específico del proveedor en comandos de 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

Ejemplo 3: Canalización de la entrada al comando Measure-Command

Los objetos a los que se canalizan Measure-Command están disponibles para el bloque de script que se pasa al parámetro Expression . El bloque de script se ejecuta una vez para cada objeto de la canalización.

# 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

Ejemplo 4: Mostrar la salida del comando medido

Para mostrar la salida de la expresión en Measure-Command , puede usar una canalización a 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

Ejemplo 5: Medición de la ejecución en un ámbito secundario

Measure-Command ejecuta el bloque de script en el ámbito actual, por lo que el bloque de scripts puede modificar valores en el ámbito actual. Para evitar cambios en el ámbito actual, debe encapsular el bloque de script entre llaves ({}) y usar el operador de invocación (&) para ejecutar el bloque en un ámbito secundario.

$foo = 'Value 1'
$null = Measure-Command { $foo = 'Value 2' }
$foo
$null = Measure-Command { & { $foo = 'Value 3' } }
$foo

Value 2
Value 2

Para obtener más información sobre el operador de invocación, consulte about_Operators.

Parámetros

-Expression

Especifica la expresión que se mide. Encierre la expresión entre llaves ({}).

Tipo:ScriptBlock
Posición:0
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-InputObject

Los objetos enlazados al parámetro InputObject son entradas opcionales para el bloque de script pasado al parámetro Expression . Dentro del bloque de script, $_ se puede usar para hacer referencia al objeto actual de la canalización.

Tipo:PSObject
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

Entradas

PSObject

Puede canalizar un objeto a este cmdlet.

Salidas

TimeSpan

Este cmdlet devuelve un objeto de intervalo de tiempo que representa el resultado.