Bagikan melalui


Trace-Command

Mengonfigurasi dan memulai jejak ekspresi atau perintah yang ditentukan.

Sintaks

expressionSet (Default)

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>]

Deskripsi

cmdlet Trace-Command mengonfigurasi dan memulai jejak ekspresi atau perintah yang ditentukan. Ini berfungsi seperti Set-TraceSource, kecuali hanya berlaku untuk perintah yang ditentukan.

Contoh

Contoh 1: Melacak pemrosesan metadata, pengikatan parameter, dan ekspresi

Contoh ini memulai jejak pemrosesan metadata, pengikatan parameter, dan pembuatan cmdlet dan penghancuran ekspresi Get-Process Notepad.

Trace-Command -Name Metadata, ParameterBinding, Cmdlet -Expression {Get-Process Notepad} -PSHost

Ini menggunakan parameter Nama untuk menentukan sumber jejak, parameter Ekspresi untuk menentukan perintah, dan parameter PSHost untuk mengirim output ke konsol. Karena tidak menentukan opsi pelacakan atau opsi pendengar, perintah menggunakan default:

  • Semua untuk opsi pelacakan
  • Tidak ada untuk opsi pendengar

Contoh 2: Melacak tindakan operasi ParameterBinding

Contoh ini melacak tindakan ParameterBinding operasi PowerShell saat memproses ekspresi Get-Alias yang mengambil input dari alur.

$A = "i*"
Trace-Command ParameterBinding {Get-Alias $input} -PSHost -InputObject $A

Dalam Trace-Command, parameter InputObject meneruskan objek ke ekspresi yang sedang diproses selama pelacakan.

Perintah pertama menyimpan i* string dalam variabel $A. Perintah kedua menggunakan cmdlet Trace-Command dengan sumber pelacakan ParameterBinding. Parameter PSHost mengirimkan output ke konsol.

Ekspresi yang sedang diproses Get-Alias $input, di mana variabel $input dikaitkan dengan parameter InputObject. Parameter InputObject meneruskan variabel $A ke ekspresi. Akibatnya, perintah yang sedang diproses selama jejak Get-Alias -InputObject $A" or "$A | Get-Alias.

Contoh 3: Melacak operasi ParameterBinding untuk perintah asli

PowerShell 7.3 menambahkan kemampuan untuk melacak pengikatan parameter untuk perintah asli. Contoh berikut menunjukkan cara PowerShell mengurai argumen baris perintah untuk perintah asli 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

Parameter

-ArgumentList

Menentukan parameter dan nilai parameter untuk perintah yang sedang dilacak. Alias untuk ArgumentList Args. Fitur ini berguna untuk men-debug parameter dinamis.

Untuk informasi lebih lanjut tentang perilaku ArgumentList, lihat about_Splatting.

Properti parameter

Jenis:

Object[]

Nilai default:None
Mendukung wildcard:False
DontShow:False
Alias:Argumen

Set parameter

commandSet
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Command

Menentukan perintah yang sedang diproses selama pelacakan.

Saat Anda menggunakan parameter ini, PowerShell memproses perintah sama seperti yang akan diproses dalam alur. Misalnya, penemuan perintah tidak diulang untuk setiap objek masuk.

Properti parameter

Jenis:String
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

commandSet
Position:1
Wajib:True
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Debugger

Menunjukkan bahwa cmdlet mengirim output jejak ke debugger. Anda dapat melihat output dalam debugger mode pengguna atau mode kernel atau di Visual Studio. Parameter ini juga memilih pendengar jejak default.

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Expression

Menentukan ekspresi yang sedang diproses selama pelacakan. Sertakan ekspresi dalam kurung kurawal ({}).

Properti parameter

Jenis:ScriptBlock
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

expressionSet
Position:1
Wajib:True
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-FilePath

Menentukan file tempat cmdlet mengirim output jejak. Parameter ini juga memilih pendengar pelacakan file.

Properti parameter

Jenis:String
Nilai default:None
Mendukung wildcard:False
DontShow:False
Alias:PSPath, Jalur

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Force

Memaksa perintah untuk dijalankan tanpa meminta konfirmasi pengguna. Digunakan dengan parameter FilePath . Bahkan menggunakan parameter Force, cmdlet tidak dapat mengabaikan pembatasan keamanan.

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-InputObject

Menentukan input ke ekspresi yang sedang diproses selama pelacakan. Anda dapat memasukkan variabel yang mewakili input yang diterima ekspresi, atau meneruskan objek melalui alur.

Properti parameter

Jenis:PSObject
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:True
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-ListenerOption

Menentukan data opsional ke awalan setiap pesan jejak dalam output. Nilai yang dapat diterima untuk parameter ini adalah:

  • None
  • LogicalOperationStack
  • DateTime
  • Timestamp
  • ProcessId
  • ThreadId
  • Callstack

None adalah default.

Nilai-nilai ini didefinisikan sebagai enumerasi berbasis bendera. Anda dapat menggabungkan beberapa nilai bersama-sama untuk mengatur beberapa bendera menggunakan parameter ini. Nilai dapat diteruskan ke parameter listenerOption sebagai array nilai atau sebagai string yang dipisahkan koma dari nilai tersebut. Cmdlet akan menggabungkan nilai menggunakan operasi biner-OR. Meneruskan nilai sebagai array adalah opsi paling sederhana dan juga memungkinkan Anda menggunakan penyelesaian tab pada nilai.

Properti parameter

Jenis:TraceOptions
Nilai default:None
Nilai yang diterima:None, LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Name

Menentukan array komponen PowerShell yang dilacak. Masukkan nama sumber pelacakan dari setiap komponen. Kartu liar diizinkan. Untuk menemukan sumber pelacakan di komputer Anda, ketik Get-TraceSource.

Properti parameter

Jenis:

String[]

Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:0
Wajib:True
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Option

Menentukan jenis peristiwa yang dilacak. Nilai yang dapat diterima untuk parameter ini adalah:

  • None
  • Constructor
  • Dispose
  • Finalizer
  • Method
  • Property
  • Delegates
  • Events
  • Exception
  • Lock
  • Error
  • Errors
  • Warning
  • Verbose
  • WriteLine
  • Data
  • Scope
  • ExecutionFlow
  • Assert
  • All

All adalah default.

Nilai berikut adalah kombinasi dari nilai lain:

  • ExecutionFlow: Constructor, , FinalizerDispose, Method, Delegates, Events,Scope
  • Data: Constructor, Dispose, Finalizer, Property, Verbose, , WriteLine
  • Errors: Error, Exception

Nilai-nilai ini didefinisikan sebagai enumerasi berbasis bendera. Anda dapat menggabungkan beberapa nilai bersama-sama untuk mengatur beberapa bendera menggunakan parameter ini. Nilai dapat diteruskan ke parameter Opsi sebagai array nilai atau sebagai string yang dipisahkan koma dari nilai tersebut. Cmdlet akan menggabungkan nilai menggunakan operasi biner-OR. Meneruskan nilai sebagai array adalah opsi paling sederhana dan juga memungkinkan Anda menggunakan penyelesaian tab pada nilai.

Properti parameter

Jenis:PSTraceSourceOptions
Nilai default:None
Nilai yang diterima:None, Constructor, Dispose, Finalizer, Method, Property, Delegates, Events, Exception, Lock, Error, Errors, Warning, Verbose, WriteLine, Data, Scope, ExecutionFlow, Assert, All
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:2
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-PSHost

Menunjukkan bahwa cmdlet mengirim output jejak ke host PowerShell. Parameter ini juga memilih pendengar jejak PSHost.

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

CommonParameters

Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.

Input

PSObject

Anda dapat menyalurkan objek yang mewakili input ke ekspresi ke cmdlet ini.

Output

PSObject

Cmdlet ini tidak mengembalikan output sendiri. Perintah yang dilacak dapat mengembalikan output. Cmdlet ini menulis jejak perintah ke aliran debug.

Catatan

Pelacakan adalah metode yang digunakan pengembang untuk men-debug dan menyempurnakan program. Saat melacak, program menghasilkan pesan terperinci tentang setiap langkah dalam pemrosesan internalnya. Cmdlet pelacakan PowerShell dirancang untuk membantu pengembang PowerShell, tetapi tersedia untuk semua pengguna. Mereka memungkinkan Anda memantau hampir setiap aspek fungsionalitas shell.

Sumber pelacakan adalah bagian dari setiap komponen PowerShell yang mengelola pelacakan dan menghasilkan pesan pelacakan untuk komponen. Untuk melacak komponen, Anda mengidentifikasi sumber pelacakannya.

Gunakan Get-TraceSource untuk melihat daftar komponen PowerShell yang diaktifkan untuk pelacakan.

Pendengar jejak menerima output pelacakan dan menampilkannya kepada pengguna. Anda dapat memilih untuk mengirim data pelacakan ke debugger mode pengguna atau mode kernel, ke host atau konsol, ke file, atau ke pendengar kustom yang berasal dari kelas System.Diagnostics.TraceListener.