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

例 3: ネイティブ コマンドの 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
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Command

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

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

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

-Debugger

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

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

-Expression

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

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

-FilePath

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

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

-Force

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

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

-InputObject

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

Type:PSObject
Position:Named
Default value:None
Required:False
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
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

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

Type:String[]
Position:0
Default value:None
Required:True
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, EventsScope
  • Data: Constructor, Dispose, , Finalizer, Property, VerboseWriteLine
  • Errors: ErrorException

これらの値は、フラグ ベースの列挙体として定義されます。 このパラメーターを使用して、複数の値を組み合わせて複数のフラグを設定できます。 値は、値の 配列として、またはそれらの値のコンマ区切り文字列として 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
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PSHost

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

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

入力

PSObject

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

出力

PSObject

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

メモ

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

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

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

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