共用方式為


Trace-Command

設定並啟動指定之表示式或命令的追蹤。

語法

Trace-Command
     [-Name] <String[]>
     [-Expression] <ScriptBlock>
     [[-Option] <PSTraceSourceOptions>]
     [-InputObject <PSObject>]
     [-ListenerOption <TraceOptions>]
     [-FilePath <String>]
     [-Force]
     [-Debugger]
     [-PSHost]
     [<CommonParameters>]
Trace-Command
     [-Name] <String[]>
     [-Command] <String>
     [[-Option] <PSTraceSourceOptions>]
     [-InputObject <PSObject>]
     [-ArgumentList <Object[]>]
     [-ListenerOption <TraceOptions>]
     [-FilePath <String>]
     [-Force]
     [-Debugger]
     [-PSHost]
     [<CommonParameters>]

Description

Trace-Command Cmdlet 會設定並啟動指定表達式或命令的追蹤。 它的運作方式就像 Set-TraceSource,不同之處在於它只適用於指定的命令。

範例

範例 1:追蹤元數據處理、參數系結和表達式

PS C:\> Trace-Command -Name metadata,parameterbinding,cmdlet -Expression {Get-Process Notepad} -PSHost

此命令會啟動元數據處理、參數係結和 Cmdlet 的追蹤,並建立和銷毀 Get-Process Notepad 表示式。 它會使用 Name 參數來指定追蹤來源、Expression 參數來指定命令,以及 PSHost 參數將輸出傳送至控制台。 因為它未指定任何追蹤選項或接聽程式選項,所以命令會使用 defaults-All 做為追蹤選項,而接聽程式選項則為 None。

範例 2:追蹤 ParameterBinding 作業的動作

PS C:\> $A = "i*"
PS C:\> Trace-Command ParameterBinding {Get-Alias $Input} -PSHost -InputObject $A

這些命令會追蹤 Windows PowerShell 的 ParameterBinding 作業動作,同時處理從管線取得輸入的 Get-Alias 表示式。

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。 這項功能特別適用於偵錯動態參數。

類型:Object[]
別名:Args
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Command

指定追蹤期間正在處理的命令。

類型:String
Position:1
預設值:None
必要:True
接受管線輸入:False
接受萬用字元:False

-Debugger

指出 Cmdlet 會將追蹤輸出傳送至調試程式。 您可以在任何使用者模式或核心模式調試程式或 Visual Studio 中檢視輸出。 此參數也會選取預設追蹤接聽程式。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Expression

指定追蹤期間正在處理的表達式。 以大括弧括住表達式({})。

類型:ScriptBlock
Position:1
預設值:None
必要:True
接受管線輸入:False
接受萬用字元:False

-FilePath

指定 Cmdlet 傳送追蹤輸出的檔案。 此參數也會選取檔案追蹤接聽程式。

類型:String
別名:PSPath
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Force

強制命令執行,而不要求使用者確認。 與 FilePath 參數搭配使用。 即使使用 Force 參數,Cmdlet 也無法覆寫安全性限制。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-InputObject

指定追蹤期間正在處理的運算式輸入。

您可以輸入代表表達式所接受之輸入的變數,或透過管線傳遞物件。

類型:PSObject
Position:Named
預設值:None
必要:False
接受管線輸入:True
接受萬用字元:False

-ListenerOption

指定輸出中每個追蹤訊息前置詞的選擇性數據。 此參數可接受的值為:

  • 沒有
  • LogicalOperationStack
  • DateTime
  • 時間戳
  • ProcessId
  • ThreadId
  • Callstack

None 是預設值。

若要指定多個選項,請以逗號分隔它們,但不含空格,並以引弧括住它們,例如 “ProcessID,ThreadID”。

類型:TraceOptions
接受的值:None, LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Name

指定追蹤的 Windows PowerShell 元件數位。 輸入每個元件的追蹤來源名稱。 允許通配符。 若您在您的電腦上尋找追蹤來源,請輸入 Get-TraceSource

類型:String[]
Position:0
預設值:None
必要:True
接受管線輸入:False
接受萬用字元:False

-Option

指定追蹤的事件類型。 此參數可接受的值為:

  • 沒有
  • 構造 函數
  • 處理
  • 完成項
  • 方法
  • 財產
  • 代表
  • 事件
  • 例外
  • 錯誤
  • 錯誤
  • 警告
  • 詳細
  • WriteLine
  • 數據
  • 範圍
  • ExecutionFlow
  • 斷言

全部都是預設值。

下列值是其他值的組合:

  • ExecutionFlow:(建構函式、處置、完成項、方法、委派、事件和範圍)
  • 數據:(建構函式、處置、完成項、屬性、詳細資訊和 WriteLine)
  • 錯誤:(錯誤和例外狀況)。

若要指定多個選項,請以逗號分隔它們,但沒有空格,並以引號括住它們,例如“建構函式,處置”。

類型:PSTraceSourceOptions
接受的值:None, Constructor, Dispose, Finalizer, Method, Property, Delegates, Events, Exception, Lock, Error, Errors, Warning, Verbose, WriteLine, Data, Scope, ExecutionFlow, Assert, All
Position:2
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-PSHost

指出 Cmdlet 會將追蹤輸出傳送至 Windows PowerShell 主機。 此參數也會選取 PSHost 追蹤接聽程式。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

輸入

PSObject

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

輸出

PSObject

傳回偵錯數據流中的命令追蹤。

備註

  • 追蹤是開發人員用來偵錯和精簡程式的方法。 追蹤時,程式會產生其內部處理中每個步驟的詳細訊息。

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

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

    追蹤來源是管理追蹤及產生元件追蹤訊息之每個 Windows PowerShell 元件的一部分。 若要追蹤元件,您可以識別其追蹤來源。

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

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

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