Trace-Command
指定した式またはコマンドのトレースを構成して開始します。
構文
expressionSet (既定)
Trace-Command
[-Name] <String[]>
[[-Option] <PSTraceSourceOptions>]
[-Expression] <ScriptBlock>
[-InputObject <PSObject>]
[-ListenerOption <TraceOptions>]
[-FilePath <String>]
[-Force]
[-Debugger]
[-PSHost]
[<CommonParameters>]
commandSet
Trace-Command
[-Name] <String[]>
[[-Option] <PSTraceSourceOptions>]
[-Command] <String>
[-InputObject <PSObject>]
[-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 操作のアクションをトレースする
この例では、パイプラインから入力を受け取る 式を処理している間、PowerShell の Get-Alias 操作のアクションをトレースします。
$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 では、ネイティブ コマンドのパラメーター バインドをトレースする機能が追加されました。 次の例は、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の動作 (
パラメーターのプロパティ
| 型: | Object[] |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | 引数 |
パラメーター セット
commandSet
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Command
トレース中に処理されるコマンドを指定します。
このパラメーターを使用すると、PowerShell はパイプラインで処理されるのと同じようにコマンドを処理します。 たとえば、受信オブジェクトごとにコマンド検出は繰り返されません。
パラメーターのプロパティ
| 型: | String |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
commandSet
| 配置: | 1 |
| 必須: | True |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Debugger
コマンドレットがデバッガーにトレース出力を送信することを示します。 出力は、任意のユーザー モードまたはカーネル モードのデバッガーまたは Visual Studio で表示できます。 このパラメーターは、既定のトレース リスナーも選択します。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Expression
トレース中に処理される式を指定します。 式は波かっこ ({}) で囲みます。
パラメーターのプロパティ
| 型: | ScriptBlock |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
expressionSet
| 配置: | 1 |
| 必須: | True |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-FilePath
コマンドレットがトレース出力を送信するファイルを指定します。 このパラメーターは、ファイル トレース リスナーも選択します。
パラメーターのプロパティ
| 型: | String |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | PSPath, 経路 |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Force
ユーザーの確認を求めずにコマンドを強制的に実行します。 FilePath パラメーターと共に使用されます。 Force パラメーターを使用しても、コマンドレットはセキュリティ制限をオーバーライドできません。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-InputObject
トレース中に処理される式への入力を指定します。 式が受け入れる入力を表す変数を入力するか、パイプラインを介してオブジェクトを渡すことができます。
パラメーターのプロパティ
| 型: | PSObject |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | True |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-ListenerOption
出力内の各トレース メッセージのプレフィックスに省略可能なデータを指定します。 このパラメーターに使用できる値は次のとおりです。
NoneLogicalOperationStackDateTimeTimestampProcessIdThreadIdCallstack
None はデフォルト値です。
これらの値は、フラグ ベースの列挙体として定義されます。 このパラメーターを使用して、複数の値を組み合わせて複数のフラグを設定できます。 値は、ListenerOption パラメーターに値の配列として、またはそれらの値のコンマ区切り文字列として渡すことができます。 コマンドレットは、バイナリ OR 操作を使用して値を結合します。 配列として値を渡すことは最も簡単なオプションであり、値にタブ補完を使用することもできます。
パラメーターのプロパティ
| 型: | TraceOptions |
| 規定値: | None |
| 指定可能な値: | None, LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Name
トレースされる PowerShell コンポーネントの配列を指定します。 各コンポーネントのトレース ソースの名前を入力します。 ワイルドカードを使用できます。 コンピューター上のトレース ソースを検索するには、「Get-TraceSource」と入力します。
パラメーターのプロパティ
| 型: | String[] |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | 0 |
| 必須: | True |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Option
トレースされるイベントの種類を決定します。 このパラメーターに使用できる値は次のとおりです。
NoneConstructorDisposeFinalizerMethodPropertyDelegatesEventsExceptionLockErrorErrorsWarningVerboseWriteLineDataScopeExecutionFlowAssertAll
All はデフォルト値です。
次の値は、他の値の組み合わせです。
-
ExecutionFlow:Constructor、Dispose、Finalizer、Method、Delegates、Events、Scope -
Data:Constructor、Dispose、Finalizer、Property、Verbose、WriteLine -
Errors:Error、Exception
これらの値は、フラグ ベースの列挙体として定義されます。 このパラメーターを使用して、複数の値を組み合わせて複数のフラグを設定できます。 値は、Option パラメーターに値の配列として、またはそれらの値のコンマ区切り文字列として渡すことができます。 コマンドレットは、バイナリ OR 操作を使用して値を結合します。 配列として値を渡すことは最も簡単なオプションであり、値にタブ補完を使用することもできます。
パラメーターのプロパティ
| 型: | PSTraceSourceOptions |
| 規定値: | None |
| 指定可能な値: | None, Constructor, Dispose, Finalizer, Method, Property, Delegates, Events, Exception, Lock, Error, Errors, Warning, Verbose, WriteLine, Data, Scope, ExecutionFlow, Assert, All |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | 2 |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-PSHost
コマンドレットが PowerShell ホストにトレース出力を送信することを示します。 このパラメーターは、PSHost トレース リスナーも選択します。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
CommonParameters
このコマンドレットでは、一般的なパラメーター -Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction、-WarningVariable の各パラメーターがサポートされています。 詳細については、about_CommonParametersを参照してください。
入力
PSObject
式への入力を表すオブジェクトをこのコマンドレットにパイプできます。
出力
PSObject
このコマンドレットは、それ自体の出力を返しません。 トレースされたコマンドは出力を返す場合があります。 このコマンドレットは、コマンド トレースをデバッグ ストリームに書き込みます。
メモ
トレースは、開発者がプログラムをデバッグおよび調整するために使用するメソッドです。 トレース時に、プログラムは内部処理の各ステップに関する詳細なメッセージを生成します。 PowerShell トレース コマンドレットは、PowerShell 開発者を支援するように設計されていますが、すべてのユーザーが使用できます。 シェルの機能のほぼすべての側面を監視できます。
トレース ソースは、トレースを管理し、コンポーネントのトレース メッセージを生成する各 PowerShell コンポーネントの一部です。 コンポーネントをトレースするには、そのトレース ソースを識別します。
Get-TraceSource を使用して、トレースが有効になっている PowerShell コンポーネントの一覧を表示します。
トレース リスナーは、トレースの出力を受け取り、ユーザーに表示します。 トレース データは、ユーザー モードデバッガーまたはカーネル モード デバッガー、ホストまたはコンソール、ファイル、または System.Diagnostics.TraceListener クラスから派生したカスタム リスナーに送信できます。