Trace-Command

指定された式またはコマンドのトレースを構成し、開始します。

構文

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>]

説明

コマンドレットは Trace-Command 、指定された式またはコマンドのトレースを構成して開始します。 Set-TraceSource と同様に機能しますが、指定されたコマンドにのみ適用される点が異なります。

例 1: トレース メタデータ処理、パラメーター バインド、および式

この例では、メタデータ処理、パラメーター バインド、およびコマンドレットの作成と式の破棄のトレースを Get-Process Notepad 開始します。

Trace-Command -Name metadata,parameterbinding,cmdlet -Expression {Get-Process Notepad} -PSHost

Name パラメーターを使用してトレース ソースを指定し、Expression パラメーターを使用してコマンドを指定し、PSHost パラメーターを使用して出力をコンソールに送信します。 トレース オプションまたはリスナー オプションは指定されないため、コマンドでは既定値が使用されます。

  • トレース オプションのすべて
  • リスナー オプションの場合はなし

例 2: ParameterBinding 操作のアクションをトレースする

この例では、パイプラインから入力を受け取る式を処理Get-Aliasしている間に、PowerShell の ParameterBinding 操作のアクションをトレースします。

$A = "i*"
Trace-Command ParameterBinding {Get-Alias $Input} -PSHost -InputObject $A

では Trace-CommandInputObject パラメーターは、トレース中に処理される式にオブジェクトを渡します。

最初のコマンドは、変数に文字列 i*$A 格納します。 2 番目のコマンドでは、 コマンドレットを Trace-Command ParameterBinding トレース ソースと共に使用します。 PSHost パラメーターは、出力をコンソールに送信します。

処理される式は です Get-Alias $Input。ここで、 $Input 変数は InputObject パラメーターに関連付けられています。 InputObject パラメーターは、変数$Aを式に渡します。 実際には、トレース中に処理されるコマンドは です Get-Alias -InputObject $A" or "$A | Get-Alias

例 3: ネイティブ コマンドの Trace ParameterBinding 操作

PowerShell 7.3 では、ネイティブ コマンドのパラメーター バインドをトレースする機能が追加されました。 次の例は、PowerShell がネイティブ コマンド のコマンド ライン引数を解析する方法を示しています TestExe

$a = 'a" "b'
Trace-Command -PSHOST -Name ParameterBinding { TestExe -echoargs $a 'c" "d' e" "f }

DEBUG: 2023-02-27 14:20:45.3975 ParameterBinding Information: 0 : BIND NAMED native application line args [C:\Public\Toolbox\TestExe\testexe.exe]
DEBUG: 2023-02-27 14:20:45.3978 ParameterBinding Information: 0 :     BIND cmd line arg [-echoargs] to position [0]
DEBUG: 2023-02-27 14:20:45.3979 ParameterBinding Information: 0 :     BIND cmd line arg [a" "b] to position [1]
DEBUG: 2023-02-27 14:20:45.3980 ParameterBinding Information: 0 :     BIND cmd line arg [c" "d] to position [2]
DEBUG: 2023-02-27 14:20:45.3982 ParameterBinding Information: 0 :     BIND cmd line arg [e f] to position [3]
DEBUG: 2023-02-27 14:20:47.6092 ParameterBinding Information: 0 : CALLING BeginProcessing

パラメーター

-ArgumentList

トレースするコマンドのパラメーターとパラメーターの値を指定します。 ArgumentList のエイリアスは、Args です。 この機能は、動的パラメーターのデバッグに役立ちます。

ArgumentList の動作の詳細については、「about_Splatting」を参照してください。

Type:Object[]
Aliases:Args
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Command

トレース中に処理されるコマンドを指定します。

このパラメーターを使用すると、PowerShell はパイプラインで処理されるのと同じようにコマンドを処理します。 たとえば、コマンド検出は、受信オブジェクトごとに繰り返されません。

Type:String
Position:1
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Debugger

コマンドレットがデバッガーにトレース出力を送信することを示します。 出力はユーザー モードまたはカーネル モードのデバッガーや、Visual Studio で表示することができます。 このパラメーターは、既定のトレース リスナーも選択します。

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Expression

トレース中に処理される式を指定します。 式を中かっこ ({}) で囲みます。

Type:ScriptBlock
Position:1
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-FilePath

コマンドレットがトレース出力を送信するファイルを指定します。 このパラメーターは、ファイル トレース リスナーも選択します。

Type:String
Aliases:PSPath, Path
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Force

ユーザーに確認せずに、直ちにコマンドを実行します。 FilePath パラメーターと共に使用されます。 Force パラメーターを使用しても、コマンドレットはセキュリティ制限をオーバーライドできません。

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

トレース中に処理される式への入力を指定します。 式が受け取る入力を表した変数を入力するか、パイプラインを通じてオブジェクトを渡すことができます。

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

-ListenerOption

出力内の各トレース メッセージのプレフィックスに省略可能なデータを指定します。 このパラメーターの有効値は、次のとおりです。

  • None
  • LogicalOperationStack
  • DateTime
  • Timestamp
  • ProcessId
  • ThreadId
  • Callstack

None が既定値です。

これらの値は、フラグ ベースの列挙体として定義されます。 複数の値を組み合わせて、このパラメーターを使用して複数のフラグを設定できます。 値は、値の配列として、またはそれらの値のコンマ区切り文字列として ListenerOption パラメーターに渡すことができます。 コマンドレットは、バイナリ OR 操作を使用して値を結合します。 配列として値を渡すことは最も簡単なオプションであり、値にタブ補完を使用することもできます。

Type:TraceOptions
Accepted values:None, LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Name

トレースされる PowerShell コンポーネントの配列を指定します。 各コンポーネントのトレース ソースの名前を入力します。 ワイルドカードを使用できます。 コンピューター上のトレース ソースを見つけるには、「」と入力します Get-TraceSource

Type:String[]
Position:0
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Option

トレース対象のイベントの種類を決定します。 このパラメーターの有効値は、次のとおりです。

  • None
  • Constructor
  • Dispose
  • Finalizer
  • Method
  • Property
  • Delegates
  • Events
  • Exception
  • Lock
  • Error
  • Errors
  • Warning
  • Verbose
  • WriteLine
  • Data
  • Scope
  • ExecutionFlow
  • Assert
  • All

All が既定値です。

次の値はその他の値の組み合わせです。

  • ExecutionFlow: Constructor, Dispose, Finalizer, Method, Delegates, Events, Scope
  • Data: Constructor, Dispose, Finalizer, Property, Verbose, WriteLine
  • Errors: Error, Exception

これらの値は、フラグ ベースの列挙体として定義されます。 複数の値を組み合わせて、このパラメーターを使用して複数のフラグを設定できます。 値は、値の配列として、またはそれらの値のコンマ区切り文字列として Option パラメーターに渡すことができます。 コマンドレットは、バイナリ OR 操作を使用して値を結合します。 配列として値を渡すことは最も簡単なオプションであり、値にタブ補完を使用することもできます。

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
Accept pipeline input:False
Accept wildcard characters:False

-PSHost

コマンドレットがトレース出力を PowerShell ホストに送信することを示します。 このパラメーターは、PSHost トレース リスナーも選択します。

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

入力

PSObject

式への入力を表すオブジェクトをこのコマンドレットにパイプできます。

出力

PSObject

このコマンドレットは、それ自体の出力を返しません。 トレースされたコマンドは出力を返す場合があります。 このコマンドレットは、コマンド トレースをデバッグ ストリームに書き込みます。

メモ

トレースは、開発者がプログラムをデバッグし、調整するために使用するメソッドです。 トレース時に、プログラムは、内部処理の各手順について詳細なメッセージを生成します。 PowerShell トレース コマンドレットは、PowerShell 開発者を支援するように設計されていますが、すべてのユーザーが使用できます。 シェルの機能のほとんどすべての側面を監視します。

トレース ソースは、トレースを管理し、コンポーネントのトレース メッセージを生成する各 PowerShell コンポーネントの一部です。 コンポーネントをトレースするには、トレース ソースを特定します。

トレースが有効になっている PowerShell コンポーネントの一覧を表示するには、 を使用 Get-TraceSource します。

トレース リスナーは、トレースの出力を受け取り、ユーザーに表示します。 トレース データは、ユーザー モードデバッガーまたはカーネル モード デバッガー、ホストまたはコンソール、ファイル、または System.Diagnostics.TraceListener クラスから派生したカスタム リスナーに送信することを選択できます。