Trace-Command
設定並啟動指定運算式或命令的追蹤。
Syntax
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>]
Description
Cmdlet Trace-Command
會設定並啟動指定表達式或命令的追蹤。
它的運作方式類似 Set-TraceSource,但只適用於指定的命令。
範例
範例 1:追蹤元數據處理、參數系結和表達式
本範例會開始追蹤元數據處理、參數係結,以及表達式的 Get-Process Notepad
建立和解構 Cmdlet。
Trace-Command -Name metadata,parameterbinding,cmdlet -Expression {Get-Process Notepad} -PSHost
它會使用 Name 參數來指定追蹤來源、指定命令的 Expression 參數,以及將輸出傳送至主控台的 PSHost 參數。 因為它未指定任何追蹤選項或接聽程式選項,所以命令會使用預設值:
- 全部用於追蹤選項
- 接聽程式選項無
範例 2:追蹤 ParameterBinding 作業的動作
這個範例會追蹤PowerShell ParameterBinding 作業的動作,同時處理 Get-Alias
從管線取得輸入的表達式。
$A = "i*"
Trace-Command ParameterBinding {Get-Alias $Input} -PSHost -InputObject $A
在 Trace-Command
中, InputObject 參數會將對象傳遞至追蹤期間所處理的表達式。
第一個命令會將字串 i*
儲存在變數中 $A
。 第二個命令會 Trace-Command
使用 Cmdlet 搭配 ParameterBinding 追蹤來源。 PSHost 參數會將輸出傳送至控制台。
正在處理的表達式是 Get-Alias $Input
,其中 $Input
變數與 InputObject 參數相關聯。 InputObject 參數會將變數$A
傳遞至表達式。 實際上,追蹤期間所處理的命令為 Get-Alias -InputObject $A" or "$A | Get-Alias
。
參數
-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
指定追蹤期間處理的命令。
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Debugger
指出 Cmdlet 會將追蹤輸出傳送至調試程式。 您可以在任何使用者模式或核心模式的偵錯工具或 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
指定 Cmdlet 傳送追蹤輸出的檔案。 這個參數也會選取檔案追蹤接聽程式。
Type: | String |
Aliases: | PSPath, Path |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
強制執行命令而不要求使用者確認。 與 FilePath 參數搭配使用。 即使使用 Force 參數,Cmdlet 也無法覆寫安全性限制。
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
指定輸出中每個追蹤訊息前置詞的選擇性數據。 此參數可接受的值為:
- 無
- LogicalOperationStack
- Datetime
- 時間戳記
- ProcessId
- ThreadId
- Callstack
[無] 為預設。
如果要指定多個選項,請以逗點加以區隔,但不含空格,並將其括在引號中,例如 "ProcessID,ThreadID"。
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
決定追蹤的事件類型。 此參數可接受的值為:
- 無
- 建構函式
- Dispose
- 完成項
- 方法
- 屬性
- 委派
- 事件
- 例外狀況
- 鎖定
- 錯誤
- Errors
- 警告
- 「詳細資訊」
- WriteLine
- 資料
- 範圍
- ExecutionFlow
- Assert
- 全部
All 為預設值。
下列的值為其他值的組合:
- ExecutionFlow:(Constructor、Dispose、Finalizer、Method、Delegates、Events 及 Scope)
- Data:(Constructor、Dispose、Finalizer、Property、Verbose 及 WriteLine)
- Errors:(Error 和 Exception)。
如果要指定多個選項,請以逗點加以區隔,但不含空格,並將其括在引號中,例如 "Constructor,Dispose"。
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
指出 Cmdlet 會將追蹤輸出傳送至 PowerShell 主機。 這個參數也會選取 PSHost 追蹤接聽程式。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
輸入
您可以使用管線將代表表示式輸入的物件傳送至 Trace-Command
。
輸出
在偵錯資料流中傳回命令追蹤。
備註
追蹤是開發人員用來偵錯及改善程式的方法。 當進行追蹤時,程式會產生有關內部處理中每個步驟的詳細訊息。
PowerShell 追蹤 Cmdlet 是設計來協助 PowerShell 開發人員,但所有使用者都可以使用。 它們可讓您監視殼層功能的幾乎各個層面。
若要尋找已啟用追蹤的 PowerShell 元件,請輸入
Get-Help Get-TraceSource
。追蹤來源是管理追蹤併產生元件追蹤訊息之每個 PowerShell 元件的一部分。 如果要追蹤元件,您必須識別其追蹤來源。
追蹤接聽程式會收到追蹤的輸出,並將它顯示給使用者。 您可以選擇將追蹤數據傳送至使用者模式或內核模式調試程式、主機或控制台、檔案或衍生自 System.Diagnostics.TraceListener 類別的自定義接聽程式。
當您使用 commandSet 參數集時,PowerShell 會處理命令,就像在管線中處理一樣。 例如,命令探索不會針對每個連入物件重複。
Name、Expression、Option 和 Command 參數的名稱是選擇性的。 如果您省略參數名稱,則未命名的參數值必須依下列順序顯示: 名稱、 表達式、 選項 或 名稱、 命令、 選項。 如果包含參數名稱,參數可以任何順序顯示。