Trace-Command
Konfiguriert und startet eine Ablaufverfolgung des angegebenen Ausdrucks oder Befehls.
Syntax
Trace-Command
[-InputObject <PSObject>]
[-Name] <String[]>
[[-Option] <PSTraceSourceOptions>]
[-Expression] <ScriptBlock>
[-ListenerOption <TraceOptions>]
[-FilePath <String>]
[-Force]
[-Debugger]
[-PSHost]
[<CommonParameters>]
Trace-Command
[-InputObject <PSObject>]
[-Name] <String[]>
[[-Option] <PSTraceSourceOptions>]
[-Command] <String>
[-ArgumentList <Object[]>]
[-ListenerOption <TraceOptions>]
[-FilePath <String>]
[-Force]
[-Debugger]
[-PSHost]
[<CommonParameters>]
Beschreibung
Das Trace-Command
Cmdlet konfiguriert und startet eine Ablaufverfolgung des angegebenen Ausdrucks oder Befehls.
Es funktioniert wie Set-TraceSource, mit dem Unterschied, dass es nur für den angegebenen Befehl gilt.
Beispiele
Beispiel 1: Ablaufverfolgungsmetadatenverarbeitung, Parameterbindung und ein Ausdruck
In diesem Beispiel wird eine Ablaufverfolgung der Metadatenverarbeitung, Der Parameterbindung und der Erstellung und Zerstörung des Get-Process Notepad
Ausdrucks gestartet.
Trace-Command -Name metadata,parameterbinding,cmdlet -Expression {Get-Process Notepad} -PSHost
Er verwendet den Parameter Name , um die Ablaufverfolgungsquellen, den Expression-Parameter zum Angeben des Befehls und den PSHost-Parameter anzugeben, um die Ausgabe an die Konsole zu senden. Da keine Ablaufverfolgungsoptionen oder Listeneroptionen angegeben werden, verwendet der Befehl die Standardwerte:
- Alle für die Ablaufverfolgungsoptionen
- Keine für die Listeneroptionen
Beispiel 2: Nachverfolgen der Aktionen von ParameterBinding-Vorgängen
In diesem Beispiel werden die Aktionen der ParameterBinding-Vorgänge von PowerShell verfolgt, während ein Get-Alias
Ausdruck verarbeitet wird, der Eingaben aus der Pipeline übernimmt.
$A = "i*"
Trace-Command ParameterBinding {Get-Alias $Input} -PSHost -InputObject $A
In Trace-Command
, der InputObject-Parameter übergibt ein Objekt an den Ausdruck, der während der Ablaufverfolgung verarbeitet wird.
Der erste Befehl speichert die Zeichenfolge i*
in der $A
Variablen. Der zweite Befehl verwendet das Trace-Command
Cmdlet mit der ParameterBinding-Ablaufverfolgungsquelle. Der PSHost-Parameter sendet die Ausgabe an die Konsole.
Der verarbeitete Ausdruck ist Get-Alias $Input
, wobei die $Input
Variable dem InputObject-Parameter zugeordnet ist. Der InputObject-Parameter übergibt die Variable $A
an den Ausdruck. Der Befehl, der während der Ablaufverfolgung verarbeitet wird, ist Get-Alias -InputObject $A" or "$A | Get-Alias
wirksam.
Parameter
-ArgumentList
Gibt die Parameter und Parameterwerte für den verfolgten Befehl an. Der Alias für ArgumentList ist Args. Dieses Feature eignet sich zum Debuggen dynamischer Parameter.
Weitere Informationen zum Verhalten von ArgumentList finden Sie unter about_Splatting.
Type: | Object[] |
Aliases: | Args |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Command
Gibt einen Befehl an, der während der Ablaufverfolgung verarbeitet wird.
Wenn Sie diesen Parameter verwenden, verarbeitet PowerShell den Befehl genauso, wie er in einer Pipeline verarbeitet würde. Beispielsweise wird die Befehlsermittlung für jedes eingehende Objekt nicht wiederholt.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Debugger
Gibt an, dass das Cmdlet die Ablaufverfolgungsausgabe an den Debugger sendet. Sie können die Ausgabe in jeden Benutzermodus- oder Kernelmodus-Debugger oder in Visual Studio anzeigen. Dieser Parameter wählt auch den Standard-Ablaufverfolgungslistener aus.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Expression
Gibt den Ausdruck an, der während der Ablaufverfolgung verarbeitet wird. Schließen Sie den Ausdruck in geschweifte Klammern ({}
) ein.
Type: | ScriptBlock |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FilePath
Gibt eine Datei an, an die das Cmdlet die Ablaufverfolgungsausgabe sendet. Dieser Parameter wählt auch den Ablaufverfolgungslistener der Datei aus.
Type: | String |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
Erzwingt die Ausführung des Befehls ohne Aufforderung zur Bestätigung durch den Benutzer. Wird mit dem FilePath-Parameter verwendet. Selbst bei Verwendung des Parameters Force kann das Cmdlet keine Sicherheitseinschränkungen außer Kraft setzen.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Gibt Eingaben für den Ausdruck an, der während der Ablaufverfolgung verarbeitet wird. Sie können eine Variable eingeben, die die Eingabe darstellt und die vom Ausdruck akzeptiert wird, oder Sie können ein Objekt über die Pipeline übergeben.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-ListenerOption
Gibt optionale Daten für das Präfix jeder Ablaufverfolgungsnachricht in der Ausgabe an. Zulässige Werte für diesen Parameter:
None
LogicalOperationStack
DateTime
Timestamp
ProcessId
ThreadId
Callstack
None
ist die Standardoption.
Diese Werte werden als flagbasierte Enumeration definiert. Sie können mehrere Werte kombinieren, um mehrere Flags mithilfe dieses Parameters festzulegen. Die Werte können als Array von Werten oder als kommagetrennte Zeichenfolge dieser Werte an den ListenerOption-Parameter übergeben werden. Das Cmdlet kombiniert die Werte mithilfe eines Binary-OR-Vorgangs. Das Übergeben von Werten als Array ist die einfachste Option und ermöglicht ihnen auch die Verwendung des Tabstopps für die Werte.
Type: | TraceOptions |
Accepted values: | None, LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Name
Gibt ein Array von PowerShell-Komponenten an, die nachverfolgt werden. Geben Sie den Namen der Ablaufverfolgungsquelle jeder Komponente ein. Platzhalter sind zulässig. Um die Ablaufverfolgungsquellen auf Ihrem Computer zu finden, geben Sie folgendes ein Get-TraceSource
.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Option
Bestimmt den Typ der Ereignisse, die verfolgt werden. Zulässige Werte für diesen Parameter:
None
Constructor
Dispose
Finalizer
Method
Property
Delegates
Events
Exception
Lock
Error
Errors
Warning
Verbose
WriteLine
Data
Scope
ExecutionFlow
Assert
All
All
ist die Standardoption.
Die folgenden Werte sind Kombinationen von anderen Werten:
ExecutionFlow
:Constructor
, ,Dispose
,Method
Finalizer
,Delegates
, ,Events
Scope
Data
:Constructor
,Dispose
,Finalizer
,Property
,Verbose
WriteLine
Errors
:Error
,Exception
Diese Werte werden als flagbasierte Enumeration definiert. Sie können mehrere Werte kombinieren, um mehrere Flags mithilfe dieses Parameters festzulegen. Die Werte können als Array von Werten oder als kommagetrennte Zeichenfolge dieser Werte an den Parameter Option übergeben werden. Das Cmdlet kombiniert die Werte mithilfe eines Binary-OR-Vorgangs. Das Übergeben von Werten als Array ist die einfachste Option und ermöglicht ihnen auch die Verwendung des Tabstopps für die Werte.
Type: | PSTraceSourceOptions |
Accepted values: | None, Constructor, Dispose, Finalizer, Method, Property, Delegates, Events, Exception, Lock, Error, Errors, Warning, Verbose, WriteLine, Data, Scope, ExecutionFlow, Assert, All |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PSHost
Gibt an, dass das Cmdlet die Ablaufverfolgungsausgabe an den PowerShell-Host sendet. Dieser Parameter wählt auch den PSHost-Ablaufverfolgungslistener aus.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Eingaben
Sie können Objekte weiterleiten, die Eingaben für den Ausdruck an dieses Cmdlet darstellen.
Ausgaben
Dieses Cmdlet gibt keine eigene Ausgabe zurück. Der Ablaufverfolgungsbefehl gibt möglicherweise die Ausgabe zurück. Dieses Cmdlet schreibt die Befehlsablaufverfolgung in den Debugdatenstrom.
Hinweise
Windows PowerShell enthält die folgenden Aliase für Trace-Command
:
trcm
Die Ablaufverfolgung ist eine Methode, die Entwickler zum Debuggen und Optimieren von Programmen verwenden. Bei der Ablaufverfolgung erzeugt das Programm ausführliche Meldungen zu den einzelnen Schritten in der internen Verarbeitung. Die PowerShell-Ablaufverfolgungs-Cmdlets sollen PowerShell-Entwickler unterstützen, aber sie sind für alle Benutzer verfügbar. Damit können Sie fast jeden Aspekt der Shell-Funktionalität überwachen.
Eine Ablaufverfolgungsquelle ist der Teil jeder PowerShell-Komponente, die die Ablaufverfolgung verwaltet und Ablaufverfolgungsmeldungen für die Komponente generiert. Um eine Komponente zu verfolgen, identifizieren Sie die Ablaufverfolgungsquelle.
Hier finden Sie Get-TraceSource
eine Liste der PowerShell-Komponenten, die für die Ablaufverfolgung aktiviert sind.
Ein Ablaufverfolgungslistener empfängt die Ausgabe der Ablaufverfolgung und zeigt sie dem Benutzer an. Sie können die Ablaufverfolgungsdaten an einen Benutzermodus- oder Kernelmodusdebugger, an den Host oder die Konsole, an eine Datei oder an einen von der System.Diagnostics.TraceListener-Klasse abgeleiteten benutzerdefinierten Listener senden.