Delen via


Trace-Command

Configureert en start een tracering van de opgegeven expressie of opdracht.

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

De Trace-Command cmdlet configureert en start een tracering van de opgegeven expressie of opdracht. Het werkt net als Set-TraceSource, behalve dat het alleen van toepassing is op de opgegeven opdracht.

Voorbeelden

Voorbeeld 1: verwerking van traceringsmetagegevens, parameterbinding en een expressie

In dit voorbeeld wordt een tracering gestart van de verwerking van metagegevens, parameterbinding en het maken en vernietigen van de expressie van cmdlets Get-Process Notepad .

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

De parameter Name wordt gebruikt om de traceringsbronnen op te geven, de expressieparameter om de opdracht op te geven en de parameter PSHost om de uitvoer naar de console te verzenden. Omdat er geen traceringsopties of listeneropties worden opgegeven, gebruikt de opdracht de standaardwaarden:

  • Alles voor de traceringsopties
  • Geen voor de listener-opties

Voorbeeld 2: De acties van ParameterBinding-bewerkingen traceren

In dit voorbeeld worden de acties van de ParameterBinding-bewerkingen van PowerShell bij het verwerken van een Get-Alias expressie die invoer uit de pijplijn opneemt.

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

In Trace-Commandgeeft de parameter InputObject een object door aan de expressie die tijdens de tracering wordt verwerkt.

Met de eerste opdracht wordt de tekenreeks i* opgeslagen in de $A variabele. De tweede opdracht maakt gebruik van de Trace-Command cmdlet met de traceringsbron ParameterBinding. De parameter PSHost verzendt de uitvoer naar de console.

De expressie die wordt verwerkt, is Get-Alias $Input, waarbij de $Input variabele is gekoppeld aan de parameter InputObject . De parameter InputObject geeft de variabele $A door aan de expressie. De opdracht die tijdens de tracering wordt verwerkt, is Get-Alias -InputObject $A" or "$A | Get-Aliasin feite .

Voorbeeld 3: ParameterBinding-bewerkingen traceren voor systeemeigen opdrachten

PowerShell 7.3 heeft de mogelijkheid toegevoegd om parameterbinding te traceren voor systeemeigen opdrachten. In het volgende voorbeeld ziet u hoe PowerShell de opdrachtregelargumenten voor de systeemeigen opdracht TestExeparseert.

$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

Parameters

-ArgumentList

Hiermee geeft u de parameters en parameterwaarden voor de opdracht die wordt getraceerd. De alias voor ArgumentList is Args. Deze functie is handig voor het opsporen van fouten in dynamische parameters.

Zie about_Splatting voor meer informatie over het gedrag van ArgumentList.

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

-Command

Hiermee geeft u een opdracht die wordt verwerkt tijdens de tracering.

Wanneer u deze parameter gebruikt, verwerkt PowerShell de opdracht op dezelfde wijze als deze wordt verwerkt in een pijplijn. Opdrachtdetectie wordt bijvoorbeeld niet herhaald voor elk binnenkomend object.

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

-Debugger

Geeft aan dat de cmdlet de traceringsuitvoer naar het foutopsporingsprogramma verzendt. U kunt de uitvoer weergeven in elk foutopsporingsprogramma voor gebruikersmodus of kernelmodus of in Visual Studio. Deze parameter selecteert ook de standaard traceringslistener.

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

-Expression

Hiermee geeft u de expressie op die wordt verwerkt tijdens de tracering. Plaats de expressie tussen accolades ({}).

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

-FilePath

Hiermee geeft u een bestand op waarnaar de cmdlet de traceringsuitvoer verzendt. Deze parameter selecteert ook de listener voor bestandstracering.

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

-Force

Hiermee dwingt u de opdracht uit te voeren zonder om bevestiging van de gebruiker te vragen. Wordt gebruikt met de parameter FilePath . Zelfs als u de parameter Force gebruikt, kan de cmdlet geen beveiligingsbeperkingen negeren.

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

-InputObject

Hiermee geeft u invoer op voor de expressie die wordt verwerkt tijdens de tracering. U kunt een variabele invoeren die de invoer vertegenwoordigt die de expressie accepteert, of een object doorgeven via de pijplijn.

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

-ListenerOption

Hiermee geeft u optionele gegevens op voor het voorvoegsel van elk traceringsbericht in de uitvoer. De aanvaardbare waarden voor deze parameter zijn:

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

None is de standaardwaarde.

Deze waarden worden gedefinieerd als een opsomming op basis van een vlag. U kunt meerdere waarden combineren om meerdere vlaggen in te stellen met behulp van deze parameter. De waarden kunnen worden doorgegeven aan de parameter ListenerOption als een matrix met waarden of als een door komma's gescheiden tekenreeks van deze waarden. De cmdlet combineert de waarden met behulp van een binaire-OR-bewerking. Het doorgeven van waarden als een matrix is de eenvoudigste optie en stelt u ook in staat om tabvoltooiing te gebruiken voor de waarden.

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

Hiermee geeft u een matrix van PowerShell-onderdelen die worden getraceerd. Voer de naam in van de traceringsbron van elk onderdeel. Jokertekens zijn toegestaan. Als u de traceringsbronnen op uw computer wilt zoeken, typt u Get-TraceSource.

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

-Option

Bepaalt het type gebeurtenissen dat wordt getraceerd. De aanvaardbare waarden voor deze parameter zijn:

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

All is de standaardwaarde.

De volgende waarden zijn combinaties van andere waarden:

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

Deze waarden worden gedefinieerd als een opsomming op basis van een vlag. U kunt meerdere waarden combineren om meerdere vlaggen in te stellen met behulp van deze parameter. De waarden kunnen worden doorgegeven aan de parameter Option als een matrix met waarden of als een door komma's gescheiden tekenreeks van deze waarden. De cmdlet combineert de waarden met behulp van een binaire-OR-bewerking. Het doorgeven van waarden als een matrix is de eenvoudigste optie en stelt u ook in staat om tabvoltooiing te gebruiken voor de waarden.

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

Geeft aan dat de cmdlet de traceringsuitvoer naar de PowerShell-host verzendt. Met deze parameter wordt ook de traceringslistener PSHost geselecteerd.

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

Invoerwaarden

PSObject

U kunt objecten die de invoer voor de expressie vertegenwoordigen, doorsnijden naar deze cmdlet.

Uitvoerwaarden

PSObject

Deze cmdlet retourneert geen eigen uitvoer. De getraceerde opdracht retourneert mogelijk uitvoer. Met deze cmdlet wordt de opdrachttracering naar de foutopsporingsstroom geschreven.

Notities

Tracering is een methode die ontwikkelaars gebruiken om fouten in programma's op te sporen en te verfijnen. Bij het traceren genereert het programma gedetailleerde berichten over elke stap in de interne verwerking. De PowerShell-tracerings-cmdlets zijn ontworpen om PowerShell-ontwikkelaars te helpen, maar ze zijn beschikbaar voor alle gebruikers. Hiermee kunt u bijna elk aspect van de functionaliteit van de shell bewaken.

Een traceringsbron is het deel van elk PowerShell-onderdeel dat tracering beheert en traceringsberichten voor het onderdeel genereert. Als u een onderdeel wilt traceren, identificeert u de traceringsbron.

Gebruik Get-TraceSource om een lijst weer te geven met PowerShell-onderdelen die zijn ingeschakeld voor tracering.

Een traceringslistener ontvangt de uitvoer van de tracering en geeft deze weer aan de gebruiker. U kunt ervoor kiezen om de traceringsgegevens te verzenden naar een foutopsporingsprogramma in de gebruikersmodus of kernelmodus, naar de host of console, naar een bestand of naar een aangepaste listener die is afgeleid van de klasse System.Diagnostics.TraceListener .