次の方法で共有


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-Commandでは、InputObject パラメーターは、トレース中に処理される式にオブジェクトを渡します。

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

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

例 3: ネイティブ コマンドの ParameterBinding 操作をトレースする

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

$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を参照してください。

型:Object[]
Aliases:Args
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Command

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

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

型:String
配置:1
規定値:None
必須:True
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Debugger

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

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Expression

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

型:ScriptBlock
配置:1
規定値:None
必須:True
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-FilePath

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

型:String
Aliases:PSPath, Path
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Force

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

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-InputObject

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

型:PSObject
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-ListenerOption

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

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

None は既定値です。

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

型:TraceOptions
指定可能な値:None, LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Name

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

型:String[]
配置:0
規定値:None
必須:True
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Option

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

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

All は既定値です。

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

  • ExecutionFlow: ConstructorDisposeFinalizerMethodDelegatesEventsScope
  • Data: ConstructorDisposeFinalizerPropertyVerboseWriteLine
  • Errors: ErrorException

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

型:PSTraceSourceOptions
指定可能な値:None, Constructor, Dispose, Finalizer, Method, Property, Delegates, Events, Exception, Lock, Error, Errors, Warning, Verbose, WriteLine, Data, Scope, ExecutionFlow, Assert, All
配置:2
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-PSHost

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

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

入力

PSObject

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

出力

PSObject

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

メモ

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

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

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

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