共用方式為


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

輸入

PSObject

您可以使用管線將代表表示式輸入的物件傳送至 Trace-Command

輸出

PSObject

在偵錯資料流中傳回命令追蹤。

備註

  • 追蹤是開發人員用來偵錯及改善程式的方法。 當進行追蹤時,程式會產生有關內部處理中每個步驟的詳細訊息。

  • PowerShell 追蹤 Cmdlet 是設計來協助 PowerShell 開發人員,但所有使用者都可以使用。 它們可讓您監視殼層功能的幾乎各個層面。

  • 若要尋找已啟用追蹤的 PowerShell 元件,請輸入 Get-Help Get-TraceSource

    追蹤來源是管理追蹤併產生元件追蹤訊息之每個 PowerShell 元件的一部分。 如果要追蹤元件,您必須識別其追蹤來源。

    追蹤接聽程式會收到追蹤的輸出,並將它顯示給使用者。 您可以選擇將追蹤數據傳送至使用者模式或內核模式調試程式、主機或控制台、檔案或衍生自 System.Diagnostics.TraceListener 類別的自定義接聽程式。

  • 當您使用 commandSet 參數集時,PowerShell 會處理命令,就像在管線中處理一樣。 例如,命令探索不會針對每個連入物件重複。

  • NameExpressionOptionCommand 參數的名稱是選擇性的。 如果您省略參數名稱,則未命名的參數值必須依下列順序顯示: 名稱表達式選項名稱命令選項。 如果包含參數名稱,參數可以任何順序顯示。