Partager via


Trace-Command

Configure et démarre un suivi de la commande ou de l'expression spécifiée.

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

L’applet Trace-Command de commande configure et démarre une trace de l’expression ou de la commande spécifiée. Elle fonctionne comme Set-TraceSource, si ce n'est qu'elle s'applique uniquement à la commande spécifiée.

Exemples

Exemple 1 : Traitement des métadonnées de trace, liaison de paramètre et expression

Cet exemple démarre une trace du traitement des métadonnées, de la liaison de paramètres et de la création et de la destruction de l’expression par applet Get-Process Notepad de commande.

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

Il utilise le paramètre Name pour spécifier les sources de trace, le paramètre Expression pour spécifier la commande et le paramètre PSHost pour envoyer la sortie à la console. Étant donné qu’elle ne spécifie aucune option de suivi ou d’écouteur, la commande utilise les valeurs par défaut :

  • Tout pour les options de suivi
  • Aucun pour les options de l’écouteur

Exemple 2 : Suivre les actions des opérations ParameterBinding

Cet exemple montre comment suivre les actions des opérations ParameterBinding de PowerShell pendant qu’il traite une Get-Alias expression qui prend une entrée à partir du pipeline.

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

Dans Trace-Command, le paramètre InputObject passe un objet à l’expression en cours de traitement pendant la trace.

La première commande stocke la chaîne i* dans la $A variable . La deuxième commande utilise l’applet de Trace-Command commande avec la source de trace ParameterBinding. Le paramètre PSHost envoie la sortie à la console.

L’expression en cours de traitement est Get-Alias $Input, où la $Input variable est associée au paramètre InputObject . Le paramètre InputObject passe la variable $A à l’expression. En effet, la commande en cours de traitement pendant la trace est Get-Alias -InputObject $A" or "$A | Get-Alias.

Exemple 3 : Opérations Trace ParameterBinding pour les commandes natives

PowerShell 7.3 a ajouté la possibilité de tracer la liaison de paramètres pour les commandes natives. L’exemple suivant montre comment PowerShell analyse les arguments de ligne de commande pour la commande TestExenative .

$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

Paramètres

-ArgumentList

Spécifie les paramètres et les valeurs de paramètre pour la commande faisant l'objet d'un suivi. L'alias d'ArgumentList est Args. Cette fonctionnalité est utile pour le débogage des paramètres dynamiques.

Pour plus d’informations sur le comportement d’ArgumentList, consultez about_Splatting.

Type:Object[]
Aliases:Args
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Command

Spécifie une commande en cours de traitement pendant la trace.

Lorsque vous utilisez ce paramètre, PowerShell traite la commande comme elle serait traitée dans un pipeline. Par exemple, la découverte de commandes n’est pas répétée pour chaque objet entrant.

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Debugger

Indique que l’applet de commande envoie la sortie de trace au débogueur. Vous pouvez afficher la sortie dans n'importe quel débogueur en mode noyau ou en mode utilisateur, ou dans Visual Studio. Ce paramètre sélectionne également l'écouteur de suivi par défaut.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Expression

Spécifie l’expression en cours de traitement pendant la trace. Placez l’expression dans des accolades ({}).

Type:ScriptBlock
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-FilePath

Spécifie un fichier auquel l’applet de commande envoie la sortie de trace. Ce paramètre sélectionne également l'écouteur de suivi de fichier.

Type:String
Aliases:PSPath, Path
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

Force l’exécution de la commande sans demander la confirmation de l’utilisateur. Utilisé avec le paramètre FilePath . Même à l’aide du paramètre Force , l’applet de commande ne peut pas remplacer les restrictions de sécurité.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Spécifie l’entrée de l’expression en cours de traitement pendant la trace. Vous pouvez entrer une variable qui représente l'entrée que l'expression accepte ou passer un objet via le pipeline.

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ListenerOption

Spécifie les données facultatives dans le préfixe de chaque message de trace dans la sortie. Les valeurs valides pour ce paramètre sont :

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

None est la valeur par défaut.

Ces valeurs sont définies comme une énumération basée sur un indicateur. Vous pouvez combiner plusieurs valeurs pour définir plusieurs indicateurs à l’aide de ce paramètre. Les valeurs peuvent être passées au paramètre ListenerOption sous la forme d’un tableau de valeurs ou d’une chaîne séparée par des virgules de ces valeurs. L’applet de commande combine les valeurs à l’aide d’une opération binary-OR. La transmission de valeurs en tant que tableau est l’option la plus simple et vous permet également d’utiliser la saisie semi-automatique par tabulation sur les valeurs.

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

Spécifie un tableau de composants PowerShell qui sont suivis. Entrez le nom de la source de suivi de chaque composant. Les caractères génériques sont autorisés. Pour rechercher les sources de trace sur votre ordinateur, tapez Get-TraceSource.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Option

Détermine le type des événements qui font l'objet d'un suivi. Les valeurs valides pour ce paramètre sont :

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

All est la valeur par défaut.

Les valeurs suivantes sont des combinaisons d'autres valeurs :

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

Ces valeurs sont définies comme une énumération basée sur un indicateur. Vous pouvez combiner plusieurs valeurs pour définir plusieurs indicateurs à l’aide de ce paramètre. Les valeurs peuvent être passées au paramètre Option sous la forme d’un tableau de valeurs ou d’une chaîne séparée par des virgules de ces valeurs. L’applet de commande combine les valeurs à l’aide d’une opération binary-OR. La transmission de valeurs en tant que tableau est l’option la plus simple et vous permet également d’utiliser la saisie semi-automatique par tabulation sur les valeurs.

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

Indique que l’applet de commande envoie la sortie de trace à l’hôte PowerShell. Ce paramètre sélectionne également l'écouteur de suivi de PSHost.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Entrées

PSObject

Vous pouvez diriger des objets qui représentent l’entrée de l’expression vers cette applet de commande.

Sorties

PSObject

Cette applet de commande ne retourne aucune sortie propre. La commande tracée peut retourner une sortie. Cette applet de commande écrit la trace de commande dans le flux de débogage.

Notes

Le suivi est une méthode que les développeurs utilisent pour déboguer et affiner les programmes. Pendant le suivi, le programme génère des messages détaillés sur chaque étape du traitement interne. Les applets de commande de suivi PowerShell sont conçues pour aider les développeurs PowerShell, mais elles sont disponibles pour tous les utilisateurs. Elles vous permettent de surveiller quasiment chaque aspect de la fonctionnalité de l'interpréteur de commandes.

Une source de trace est la partie de chaque composant PowerShell qui gère le suivi et génère des messages de trace pour le composant. Pour suivre un composant, vous identifiez sa source de suivi.

Utilisez Get-TraceSource pour afficher la liste des composants PowerShell activés pour le suivi.

Un écouteur de trace reçoit la sortie de la trace et l’affiche à l’utilisateur. Vous pouvez choisir d’envoyer les données de trace à un débogueur en mode utilisateur ou en mode noyau, à l’hôte ou à la console, à un fichier ou à un écouteur personnalisé dérivé de la classe System.Diagnostics.TraceListener .