Compartilhar via


Trace-Command

Configura e inicia um rastreamento da expressão ou comando especificado.

Sintaxe

expressionSet (Padrão)

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

Description

O cmdlet Trace-Command configura e inicia um rastreamento da expressão ou comando especificado. Ele funciona como Set-TraceSource, exceto que se aplica apenas ao comando especificado.

Exemplos

Exemplo 1: processamento de metadados de rastreamento, associação de parâmetros e uma expressão

Este exemplo inicia um rastreamento de processamento de metadados, associação de parâmetros e criação e destruição de cmdlet da expressão Get-Process Notepad.

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

Ele usa o parâmetro Name para especificar as fontes de rastreamento, o parâmetro expressão para especificar o comando e o parâmetro PSHost para enviar a saída para o console. Como ele não especifica nenhuma opção de rastreamento ou opções de ouvinte, o comando usa os padrões:

  • Tudo para as opções de rastreamento
  • Nenhuma para as opções do ouvinte

Exemplo 2: Rastrear as ações das operações ParameterBinding

Este exemplo rastreia as ações das operações de ParameterBinding do PowerShell enquanto processa uma expressão Get-Alias que usa a entrada do pipeline.

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

Em Trace-Command, o parâmetro InputObject passa um objeto para a expressão que está sendo processada durante o rastreamento.

O primeiro comando armazena a cadeia de caracteres i* na variável $A. O segundo comando usa o cmdlet Trace-Command com a origem de rastreamento ParameterBinding. O parâmetro PSHost envia a saída para o console.

A expressão que está sendo processada é Get-Alias $input, em que a variável $input está associada ao parâmetro InputObject. O parâmetro InputObject passa a variável $A para a expressão. Na verdade, o comando que está sendo processado durante o rastreamento é Get-Alias -InputObject $A" or "$A | Get-Alias.

Exemplo 3: rastrear operações ParameterBinding para comandos nativos

O PowerShell 7.3 adicionou a capacidade de rastrear a associação de parâmetros para comandos nativos. O exemplo a seguir mostra como o PowerShell analisa os argumentos de linha de comando para o comando nativo 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

Parâmetros

-ArgumentList

Especifica os parâmetros e os valores de parâmetro para o comando que está sendo rastreado. O alias para ArgumentList é Args. Esse recurso é útil para depurar parâmetros dinâmicos.

Para obter mais informações sobre o comportamento de ArgumentList, consulte about_Splatting.

Propriedades do parâmetro

Tipo:

Object[]

Valor padrão:None
Dá suporte a curingas:False
DontShow:False
Aliases:Argumentos

Conjuntos de parâmetros

commandSet
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Command

Especifica um comando que está sendo processado durante o rastreamento.

Quando você usa esse parâmetro, o PowerShell processa o comando da mesma forma que seria processado em um pipeline. Por exemplo, a descoberta de comandos não é repetida para cada objeto de entrada.

Propriedades do parâmetro

Tipo:String
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

commandSet
Cargo:1
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Debugger

Indica que o cmdlet envia a saída de rastreamento para o depurador. Você pode exibir a saída em qualquer depurador no modo de usuário ou kernel ou no Visual Studio. Esse parâmetro também seleciona o ouvinte de rastreamento padrão.

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Expression

Especifica a expressão que está sendo processada durante o rastreamento. Coloque a expressão entre chaves ({}).

Propriedades do parâmetro

Tipo:ScriptBlock
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

expressionSet
Cargo:1
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-FilePath

Especifica um arquivo para o qual o cmdlet envia a saída de rastreamento. Esse parâmetro também seleciona o ouvinte de rastreamento de arquivo.

Propriedades do parâmetro

Tipo:String
Valor padrão:None
Dá suporte a curingas:False
DontShow:False
Aliases:PSPath, Caminho

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Force

Força o comando a ser executado sem solicitar a confirmação do usuário. Usado com o parâmetro FilePath. Mesmo usando o parâmetro Force, o cmdlet não consegue superar as restrições de segurança.

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-InputObject

Especifica a entrada para a expressão que está sendo processada durante o rastreamento. Você pode inserir uma variável que representa a entrada aceita pela expressão ou passar um objeto pelo pipeline.

Propriedades do parâmetro

Tipo:PSObject
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:True
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-ListenerOption

Especifica dados opcionais para o prefixo de cada mensagem de rastreamento na saída. Os valores aceitáveis para este parâmetro são:

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

None é o padrão.

Esses valores são definidos como uma enumeração baseada em sinalizador. Você pode combinar vários valores para definir vários sinalizadores usando esse parâmetro. Os valores podem ser passados para o parâmetro ListenerOption como uma matriz de valores ou como uma cadeia de caracteres separada por vírgulas desses valores. O cmdlet combinará os valores usando uma operação binária-OR. Passar valores como uma matriz é a opção mais simples e também permite usar o preenchimento com Tab nos valores.

Propriedades do parâmetro

Tipo:TraceOptions
Valor padrão:None
Valores aceitos:None, LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Name

Especifica uma matriz de componentes do PowerShell que são rastreados. Insira o nome da fonte de rastreamento de cada componente. Caracteres curinga são permitidos. Para localizar as fontes de rastreamento em seu computador, digite Get-TraceSource.

Propriedades do parâmetro

Tipo:

String[]

Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:0
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Option

Determina o tipo de eventos que são rastreados. Os valores aceitáveis para este parâmetro são:

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

All é o padrão.

Os seguintes valores são combinações de outros valores:

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

Esses valores são definidos como uma enumeração baseada em sinalizador. Você pode combinar vários valores para definir vários sinalizadores usando esse parâmetro. Os valores podem ser passados para a opção parâmetro como uma matriz de valores ou como uma cadeia de caracteres separada por vírgulas desses valores. O cmdlet combinará os valores usando uma operação binária-OR. Passar valores como uma matriz é a opção mais simples e também permite usar o preenchimento com Tab nos valores.

Propriedades do parâmetro

Tipo:PSTraceSourceOptions
Valor padrão:None
Valores aceitos:None, Constructor, Dispose, Finalizer, Method, Property, Delegates, Events, Exception, Lock, Error, Errors, Warning, Verbose, WriteLine, Data, Scope, ExecutionFlow, Assert, All
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:2
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-PSHost

Indica que o cmdlet envia a saída de rastreamento para o host do PowerShell. Esse parâmetro também seleciona o ouvinte de rastreamento PSHost.

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

CommonParameters

Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.

Entradas

PSObject

Você pode canalizar objetos que representam a entrada para a expressão para este cmdlet.

Saídas

PSObject

Esse cmdlet não retorna nenhuma saída própria. O comando rastreado pode retornar a saída. Esse cmdlet grava o rastreamento de comando no fluxo de depuração.

Observações

O rastreamento é um método que os desenvolvedores usam para depurar e refinar programas. Ao rastrear, o programa gera mensagens detalhadas sobre cada etapa em seu processamento interno. Os cmdlets de rastreamento do PowerShell foram projetados para ajudar os desenvolvedores do PowerShell, mas estão disponíveis para todos os usuários. Eles permitem monitorar quase todos os aspectos da funcionalidade do shell.

Uma fonte de rastreamento é a parte de cada componente do PowerShell que gerencia o rastreamento e gera mensagens de rastreamento para o componente. Para rastrear um componente, identifique a fonte de rastreamento.

Use Get-TraceSource para ver uma lista de componentes do PowerShell habilitados para rastreamento.

Um ouvinte de rastreamento recebe a saída do rastreamento e o exibe para o usuário. Você pode optar por enviar os dados de rastreamento para um depurador no modo de usuário ou kernel, para o host ou console, para um arquivo ou para um ouvinte personalizado derivado da classe System.Diagnostics.TraceListener.