다음을 통해 공유


Trace-Command

지정된 식 또는 명령의 추적을 구성하고 시작합니다.

구문

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: 추적 메타데이터 처리, 매개 변수 바인딩 및 식

이 예제에서는 메타데이터 처리, 매개 변수 바인딩 및 cmdlet 생성 및 식의 소멸 추적을 시작합니다 Get-Process Notepad .

Trace-Command -Name metadata,parameterbinding,cmdlet -Expression {Get-Process Notepad} -PSHost

Name 매개 변수를 사용하여 추적 원본을 지정하고, Expression 매개 변수를 사용하여 명령을 지정하고, PSHost 매개 변수를 사용하여 출력을 콘솔로 보냅니다. 추적 옵션 또는 수신기 옵션을 지정하지 않으므로 이 명령은 기본값을 사용합니다.

  • 추적 옵션에 대한 모든 항목
  • 수신기 옵션에 대한 없음

예제 2: ParameterBinding 작업의 작업 추적

이 예제에서는 파이프라인에서 입력을 가져오는 식을 처리하는 Get-Alias 동안 PowerShell의 ParameterBinding 작업의 작업을 추적합니다.

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

In에서 Trace-CommandInputObject 매개 변수는 추적 중에 처리되는 식에 개체를 전달합니다.

첫 번째 명령은 변수에 문자열 i* 을 저장합니다 $A . 두 번째 명령은 ParameterBinding 추적 원본과 함께 cmdlet을 사용합니다 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별칭은 Args입니다. 이 기능은 동적 매개 변수를 디버깅하는 데 유용합니다.

ArgumentList동작에 대한 자세한 내용은 about_Splatting 참조하세요.

형식:Object[]
별칭:Args
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Command

추적 중에 처리되는 명령을 지정합니다.

이 매개 변수를 사용하는 경우 PowerShell은 파이프라인에서 처리되는 것처럼 명령을 처리합니다. 예를 들어 들어오는 각 개체에 대해 명령 검색이 반복되지 않습니다.

형식:String
Position:1
Default value:None
필수:True
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Debugger

cmdlet이 추적 출력을 디버거로 보내도록 나타냅니다. 모든 사용자 모드 또는 커널 모드 디버거 또는 Visual Studio에서 출력을 볼 수 있습니다. 이 매개 변수는 기본 추적 수신기도 선택합니다.

형식:SwitchParameter
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Expression

추적 중에 처리되는 식을 지정합니다. 식을 중괄호({})로 묶습니다.

형식:ScriptBlock
Position:1
Default value:None
필수:True
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-FilePath

cmdlet이 추적 출력을 보내는 파일을 지정합니다. 이 매개 변수는 파일 추적 수신기도 선택합니다.

형식:String
별칭:PSPath, Path
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Force

사용자 확인을 요청하지 않고 명령을 강제 실행합니다. FilePath 매개 변수와 함께 사용됩니다. Force 매개 변수를 사용하더라도 cmdlet은 보안 제한을 재정의할 수 없습니다.

형식:SwitchParameter
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-InputObject

추적 중에 처리되는 식에 대한 입력을 지정합니다. 식에서 허용하는 입력을 나타내는 변수를 입력하거나 파이프라인을 통해 개체를 전달할 수 있습니다.

형식:PSObject
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-ListenerOption

출력에 있는 각 추적 메시지의 접두사에 대한 선택적 데이터를 지정합니다. 이 매개 변수에 허용되는 값은 다음과 같습니다.

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

기본값은 None입니다.

이러한 값은 플래그 기반 열거형으로 정의됩니다. 이 매개 변수를 사용하여 여러 값을 결합하여 여러 플래그를 설정할 수 있습니다. 값은 값 배열 또는 해당 값의 쉼표로 구분된 문자열로 ListenerOption 매개 변수에 전달될 수 있습니다. cmdlet은 이진 OR 연산을 사용하여 값을 결합합니다. 값을 배열로 전달하는 것이 가장 간단한 옵션이며 값에 대한 탭 완성을 사용할 수도 있습니다.

형식:TraceOptions
허용되는 값:None, LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Name

추적되는 PowerShell 구성 요소의 배열을 지정합니다. 각 구성 요소의 추적 원본 이름을 입력합니다. 와일드카드가 허용됩니다. 컴퓨터에서 추적 원본을 찾으려면 .를 입력 Get-TraceSource합니다.

형식:String[]
Position:0
Default value:None
필수:True
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Option

추적되는 이벤트의 유형을 결정합니다. 이 매개 변수에 허용되는 값은 다음과 같습니다.

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

기본값은 All입니다.

다음 값은 다른 값의 조합입니다.

  • ExecutionFlow: Constructor,Dispose, , MethodFinalizer, Delegates, EventsScope
  • Data: Constructor, Dispose, Finalizer, Property, VerboseWriteLine
  • Errors: Error, Exception

이러한 값은 플래그 기반 열거형으로 정의됩니다. 이 매개 변수를 사용하여 여러 값을 결합하여 여러 플래그를 설정할 수 있습니다. 값은 값 배열 또는 해당 값의 쉼표로 구분된 문자열로 Option 매개 변수에 전달할 수 있습니다. cmdlet은 이진 OR 연산을 사용하여 값을 결합합니다. 값을 배열로 전달하는 것이 가장 간단한 옵션이며 값에 대한 탭 완성을 사용할 수도 있습니다.

형식:PSTraceSourceOptions
허용되는 값: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
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-PSHost

cmdlet이 추적 출력을 PowerShell 호스트로 보내도록 나타냅니다. 이 매개 변수는 PSHost 추적 수신기도 선택합니다.

형식:SwitchParameter
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

입력

PSObject

입력을 나타내는 개체를 이 cmdlet에 파이프할 수 있습니다.

출력

PSObject

이 cmdlet은 자체 출력을 반환하지 않습니다. 추적된 명령은 출력을 반환할 수 있습니다. 이 cmdlet은 명령 추적을 디버그 스트림에 씁니다.

참고

추적은 개발자가 프로그램을 디버그하고 구체화하는 데 사용하는 방법입니다. 추적하면 프로그램에서 내부 프로세스의 각 단계에 대한 세부 메시지를 생성합니다. PowerShell 추적 cmdlet은 PowerShell 개발자를 지원하도록 설계되었지만 모든 사용자가 사용할 수 있습니다. 셸 기능의 거의 모든 측면을 모니터링할 수 있습니다.

추적 원본은 추적을 관리하고 구성 요소에 대한 추적 메시지를 생성하는 각 PowerShell 구성 요소의 일부입니다. 구성 요소를 추적하려면 해당 추적 원본을 식별합니다.

추적을 사용하도록 설정된 PowerShell 구성 요소 목록을 확인하는 데 사용합니다 Get-TraceSource .

추적 수신기는 추적의 출력을 받아 사용자에게 표시합니다. 추적 데이터를 사용자 모드 또는 커널 모드 디버거, 호스트 또는 콘솔, 파일 또는 System.Diagnostics.TraceListener 클래스에서 파생된 사용자 지정 수신기로 보내도록 선택할 수 있습니다.