Measure-Command
Mide el tiempo necesario para ejecutar scriptsblocks y cmdlets.
Sintaxis
Default (valor predeterminado)
Measure-Command
[-InputObject <PSObject>]
[-Expression] <ScriptBlock>
[<CommonParameters>]
Description
El Measure-Command cmdlet ejecuta un scriptblock o un cmdlet internamente, a veces la ejecución de la operación y devuelve el tiempo de ejecución.
Nota:
scriptblocks ejecutados por Measure-Command run 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 comando Get-EventLog 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 de Get-ChildItem recursivo que usa el parámetro path para obtener solo .txt archivos en el directorio C:\Windows y sus subdirectorios.
El segundo comando mide el tiempo necesario para procesar un comando de Get-ChildItem recursivo 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 a Measure-Command
Los objetos a los que se canalizan Measure-Command están disponibles para el scriptblock que se pasa al parámetro Expression . El scriptblock 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 para 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 scriptblock en el ámbito actual, por lo que el scriptblock puede modificar valores en el ámbito actual. Para evitar cambios en el ámbito actual, debe encapsular las llaves{} de script () 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, vea about_Operators.
Parámetros
-Expression
Especifica la expresión que se está sincronizando. Encierre la expresión entre llaves ({}).
Propiedades de parámetro
| Tipo: | ScriptBlock |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
(All)
| Posición: | 0 |
| Obligatorio: | True |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-InputObject
Los objetos enlazados al parámetro InputObject son entradas opcionales para el scriptblock pasado al parámetro Expression . Dentro del scriptblock, $_ se puede usar para hacer referencia al objeto actual de la canalización.
Propiedades de parámetro
| Tipo: | PSObject |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
(All)
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | True |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
CommonParameters
Este cmdlet admite los parámetros comunes: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction y -WarningVariable. Para obtener más información, vea about_CommonParameters.
Entradas
PSObject
Puede canalizar un objeto a este cmdlet.
Salidas
TimeSpan
Este cmdlet devuelve un objeto de intervalo de tiempo que representa el resultado.