Measure-Command

Misura il tempo necessario per eseguire i cmdlet e i blocchi di script.

Sintassi

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

Descrizione

Il Measure-Command cmdlet esegue internamente un blocco di script o un cmdlet, volte l'esecuzione dell'operazione e restituisce il tempo di esecuzione.

Nota

I blocchi di script vengono eseguiti nell'ambito Measure-Command corrente, non in un ambito figlio.

Esempio

Esempio 1: Misurare un comando

Questo esempio misura il tempo necessario per eseguire un Get-EventLog comando che ottiene gli eventi nel registro eventi di Windows PowerShell.

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

Esempio 2: Confrontare due output da Measure-Command

Il primo comando misura il tempo necessario per elaborare un comando ricorsivo Get-ChildItem che usa il parametro Path per ottenere solo .txt i file nella C:\Windows directory e le relative sottodirectory.

Il secondo comando misura il tempo necessario per elaborare un comando ricorsivo Get-ChildItem che usa il parametro Filter specifico del provider.

Questi comandi mostrano il valore dell'uso di un filtro specifico del provider nei comandi di 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

Esempio 3: Invio di piping dell'input a Measure-Command

Gli oggetti inviati tramite pipe a Measure-Command sono disponibili per il blocco di script passato al parametro Expression . Il blocco di script viene eseguito una volta per ogni oggetto nella 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

Esempio 4: Visualizzazione dell'output del comando misurato

Per visualizzare l'output dell'espressione in Measure-Command è possibile usare una pipe 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

Esempio 5: Misurazione dell'esecuzione in un ambito figlio

Measure-Command esegue il blocco di script nell'ambito corrente, in modo che il blocco di script possa modificare i valori nell'ambito corrente. Per evitare modifiche all'ambito corrente, è necessario eseguire il wrapping del blocco di script tra parentesi graffe ({}) e usare l'operatore di chiamata (&) per eseguire il blocco in un ambito figlio.

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

Value 2
Value 2

Per altre informazioni sull'operatore di chiamata, vedere about_Operators.

Parametri

-Expression

Specifica l'espressione per la misurazione. Racchiudere l'espressione tra parentesi graffe ({}).

Type:ScriptBlock
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Gli oggetti associati al parametro InputObject sono input facoltativi per il blocco di script passato al parametro Expression . All'interno del blocco di script è $_ possibile usare per fare riferimento all'oggetto corrente nella pipeline.

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

Input

PSObject

È possibile inviare tramite pipe un oggetto a questo cmdlet.

Output

TimeSpan

Questo cmdlet restituisce un oggetto intervallo di tempo che rappresenta il risultato.