Measure-Command
Misst die Zeit, die zum Ausführen von Skriptblöcken und Cmdlets benötigt wird.
Syntax
Default (Standardwert)
Measure-Command
[-InputObject <PSObject>]
[-Expression] <ScriptBlock>
[<CommonParameters>]
Beschreibung
Das Cmdlet Measure-Command führt intern einen Skriptblock oder ein Cmdlet aus, gibt die Ausführungszeit des Vorgangs zurück.
Hinweis
Skriptblöcke, die von Measure-Command im aktuellen Bereich ausgeführt werden, kein untergeordneter Bereich.
Beispiele
Beispiel 1: Messen eines Befehls
In diesem Beispiel wird die Zeit zum Ausführen eines Get-EventLog Befehls ermittelt, der die Ereignisse im Windows PowerShell-Ereignisprotokoll abruft.
Measure-Command { Get-EventLog "Windows PowerShell" }
Beispiel 2: Vergleichen von zwei Ausgaben aus Measure-Command
Der erste Befehl misst die Zeit, die zum Verarbeiten eines rekursiven Get-ChildItem-Befehls benötigt wird, der den parameter Path verwendet, um nur .txt Dateien im C:\Windows Verzeichnis und seinen Unterverzeichnissen abzurufen.
Der zweite Befehl misst die Zeit, die zum Verarbeiten eines rekursiven Get-ChildItem-Befehls benötigt wird, der den anbieterspezifischen Filter--Parameter verwendet.
Diese Befehle zeigen den Wert der Verwendung eines anbieterspezifischen Filters in PowerShell-Befehlen an.
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
Beispiel 3: Leitungseingabe an Measure-Command
Objekte, die an Measure-Command weitergeleitet werden, stehen dem Skriptblock zur Verfügung, der an den parameter Expression übergeben wird. Der Skriptblock wird einmal für jedes Objekt in der Pipeline ausgeführt.
# 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
Beispiel 4: Anzeigen der Ausgabe des gemessenen Befehls
Zum Anzeigen der Ausgabe des Ausdrucks in Measure-Command können Sie eine Pipe zum Out-Defaultverwenden.
# 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
Beispiel 5: Messen der Ausführung in einem untergeordneten Bereich
Measure-Command führt den Skriptblock im aktuellen Bereich aus, sodass der Skriptblock Werte im aktuellen Bereich ändern kann. Um Änderungen am aktuellen Bereich zu vermeiden, müssen Sie den Skriptblock in geschweifte Klammern ({}) einschließen und den Aufrufoperator (&) verwenden, um den Block in einem untergeordneten Bereich auszuführen.
$foo = 'Value 1'
$null = Measure-Command { $foo = 'Value 2' }
$foo
$null = Measure-Command { & { $foo = 'Value 3' } }
$foo
Value 2
Value 2
Weitere Informationen zum Aufrufoperator finden Sie unter about_Operators.
Parameter
-Expression
Gibt den Ausdruck an, der zur Zeitzeit festgelegt wird. Schließen Sie den Ausdruck in geschweifte Klammern ({}) ein.
Parametereigenschaften
| Typ: | ScriptBlock |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | 0 |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-InputObject
Objekte, die an den parameter InputObject gebunden sind, sind optionale Eingaben für den Skriptblock, der an den parameter Expression übergeben wird. Innerhalb des Skriptblocks kann $_ verwendet werden, um auf das aktuelle Objekt in der Pipeline zu verweisen.
Parametereigenschaften
| Typ: | PSObject |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
PSObject
Sie können ein Objekt an dieses Cmdlet weiterleiten.
Ausgaben
TimeSpan
Dieses Cmdlet gibt ein Zeitspannobjekt zurück, das das Ergebnis darstellt.