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
:Constructor
、Dispose
、Finalizer
、Method
、Delegates
、Events
、Scope
Data
:Constructor
、Dispose
、Finalizer
、Property
、Verbose
、WriteLine
Errors
:Error
、Exception
これらの値は、フラグ ベースの列挙体として定義されます。 このパラメーターを使用して、複数の値を組み合わせて複数のフラグを設定できます。 値は、 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 |
入力
式への入力を表すオブジェクトをこのコマンドレットにパイプできます。
出力
このコマンドレットは、それ自体の出力を返しません。 トレースされたコマンドは出力を返す場合があります。 このコマンドレットは、コマンド トレースをデバッグ ストリームに書き込みます。
メモ
トレースは、開発者がプログラムをデバッグし、調整するために使用するメソッドです。 トレース時に、プログラムは、内部処理の各手順について詳細なメッセージを生成します。 PowerShell トレース コマンドレットは、PowerShell 開発者を支援するように設計されていますが、すべてのユーザーが使用できます。 シェルの機能のほとんどすべての側面を監視します。
トレース ソースは、トレースを管理し、コンポーネントのトレース メッセージを生成する各 PowerShell コンポーネントの一部です。 コンポーネントをトレースするには、トレース ソースを特定します。
Get-TraceSource
を使用して、トレースが有効になっている PowerShell コンポーネントの一覧を表示します。
トレース リスナーは、トレースの出力を受け取り、ユーザーに表示します。 トレース データは、ユーザー モードデバッガーまたはカーネル モード デバッガー、ホストまたはコンソール、ファイル、または System.Diagnostics.TraceListener クラスから派生したカスタム リスナーに送信できます。
関連リンク
PowerShell