Delen via


Trace-Command

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

Syntaxis

expressionSet (Standaard)

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

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

Voorbeelden

Voorbeeld 1: Verwerking van metagegevens, parameterbinding en een expressie traceren

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

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

Hierbij wordt de parameter Name gebruikt om de traceringsbronnen, de Expression parameter op te geven 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 standaardinstellingen:

  • Alles voor de traceringsopties
  • Geen voor de listeneropties

Voorbeeld 2: De acties van ParameterBinding-bewerkingen traceren

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

$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 variabele $A. De tweede opdracht maakt gebruik van de Trace-Command cmdlet met de ParameterBinding-traceringsbron. De parameter PSHost verzendt de uitvoer naar de console.

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

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 parseert voor de systeemeigen opdracht 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

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_Splattingvoor meer informatie over het gedrag van ArgumentList.

Parametereigenschappen

Type:

Object[]

Default value:None
Ondersteunt jokertekens:False
DontShow:False
Aliassen:Argumenten

Parametersets

commandSet
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-Command

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

Wanneer u deze parameter gebruikt, verwerkt PowerShell de opdracht net zoals deze in een pijplijn zou worden verwerkt. Opdrachtdetectie wordt bijvoorbeeld niet herhaald voor elk binnenkomend object.

Parametereigenschappen

Type:String
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

commandSet
Position:1
Verplicht:True
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-Debugger

Geeft aan dat de cmdlet de traceringsuitvoer naar het foutopsporingsprogramma verzendt. U kunt de uitvoer weergeven in elk foutopsporingsprogramma in de gebruikersmodus of kernelmodus of in Visual Studio. Met deze parameter wordt ook de standaardtraceerlistener geselecteerd.

Parametereigenschappen

Type:SwitchParameter
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-Expression

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

Parametereigenschappen

Type:ScriptBlock
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

expressionSet
Position:1
Verplicht:True
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-FilePath

Hiermee geeft u een bestand waarnaar de cmdlet de traceringsuitvoer verzendt. Met deze parameter wordt ook de listener voor bestandstracering geselecteerd.

Parametereigenschappen

Type:String
Default value:None
Ondersteunt jokertekens:False
DontShow:False
Aliassen:PSPath, Path

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-Force

Hiermee dwingt u de opdracht uit te voeren zonder dat u om bevestiging van de gebruiker wordt gevraagd. Wordt gebruikt met de parameter FilePath. Zelfs met behulp van de Force parameter kan de cmdlet geen beveiligingsbeperkingen overschrijven.

Parametereigenschappen

Type:SwitchParameter
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-InputObject

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

Parametereigenschappen

Type:PSObject
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:True
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-ListenerOption

Hiermee geeft u optionele gegevens aan het voorvoegsel van elk traceringsbericht in de uitvoer. De acceptabele 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 vlaggen. 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 OF-bewerking. Het doorgeven van waarden als een matrix is de eenvoudigste optie en u kunt ook tabvoltooiing gebruiken voor de waarden.

Parametereigenschappen

Type:TraceOptions
Default value:None
Geaccepteerde waarden:None, LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-Name

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

Parametereigenschappen

Type:

String[]

Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:0
Verplicht:True
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-Option

Bepaalt het type gebeurtenissen dat wordt getraceerd. De acceptabele 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, , DelegatesEventsScope
  • Data: Constructor, Dispose, Finalizer, , VerbosePropertyWriteLine
  • Errors: , ErrorException

Deze waarden worden gedefinieerd als een opsomming op basis van vlaggen. 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 OF-bewerking. Het doorgeven van waarden als een matrix is de eenvoudigste optie en u kunt ook tabvoltooiing gebruiken voor de waarden.

Parametereigenschappen

Type:PSTraceSourceOptions
Default value:None
Geaccepteerde waarden:None, Constructor, Dispose, Finalizer, Method, Property, Delegates, Events, Exception, Lock, Error, Errors, Warning, Verbose, WriteLine, Data, Scope, ExecutionFlow, Assert, All
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:2
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-PSHost

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

Parametereigenschappen

Type:SwitchParameter
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

CommonParameters

Deze cmdlet ondersteunt de algemene parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction en -WarningVariable. Zie about_CommonParametersvoor meer informatie.

Invoerwaarden

PSObject

U kunt objecten doorsluisen die invoer voor de expressie voor deze cmdlet vertegenwoordigen.

Uitvoerwaarden

PSObject

Deze cmdlet retourneert geen eigen uitvoer. De traceringsopdracht kan uitvoer retourneren. Met deze cmdlet wordt de opdrachttracering naar de foutopsporingsstroom geschreven.

Notities

Tracering is een methode die ontwikkelaars gebruiken om 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 vrijwel elk aspect van de functionaliteit van de shell bewaken.

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

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

Een traceerlistener 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 System.Diagnostics.TraceListener--klasse.