Export (0) Print
Expand All

Set-PSDebug

Updated: August 9, 2015

Set-PSDebug

Turns script debugging features on and off, sets the trace level, and toggles strict mode.

Syntax

Parameter Set: off
Set-PSDebug [-Off] [ <CommonParameters>]

Parameter Set: on
Set-PSDebug [-Step] [-Strict] [-Trace <Int32> ] [ <CommonParameters>]




Detailed Description

The Set-PSDebug cmdlet turns script debugging features on and off, sets the trace level, and toggles strict mode.

When the Trace parameter has a value of 1, each line of script is traced as it runs. When the parameter has a value of 2, variable assignments, function calls, and script calls are also traced. If the Step parameter is specified, you are prompted before each line of the script runs.

Parameters

-Off

Indicates that this cmdlet turns off all script debugging features.

A Set-StrictMode -Off command disables the verification set by a Set-PSDebug -Strict command. For more information, see Set-StrictMode.


Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-Step

Indicates that this cmdlet turns on script stepping. Before each line runs, Windows PowerShell prompts you to stop, continue, or enter a new interpreter level to inspect the state of the script.

Specifying the Step parameter automatically sets a trace level of 1.


Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-Strict

Indicates that Windows PowerShell returns an exception if a variable is referenced before a value is assigned to the variable.

A Set-StrictMode -Off command disables the verification set by a Set-PSDebug -Strict command. For more information, see Set-StrictMode.


Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-Trace<Int32>

Specifies the trace level. The acceptable values for this parameter are:

-- 1: Trace script lines as they run.
-- 0: Turn script tracing off.
-- 2: Trace script lines, variable assignments, function calls, and scripts.


Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

<CommonParameters>

This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see    about_CommonParameters.

Inputs

The input type is the type of the objects that you can pipe to the cmdlet.

  • None

    You cannot pipe input to this cmdlet.


Outputs

The output type is the type of the objects that the cmdlet emits.

  • None

    This cmdlet does not return any output.


Examples

Example 1: Set the trace level to 2

This command sets the trace level to 2, and then runs a script that displays the numbers 1, 2, and 3.


PS C:\> Set-PSDebug -Trace 2; foreach ($i in 1..3) {$i}

DEBUG:    1+ Set-PsDebug -Trace 2; foreach ($i in 1..3) {$i}
DEBUG:    1+ Set-PsDebug -Trace 2; foreach ($i in 1..3) {$i}
1
DEBUG:    1+ Set-PsDebug -Trace 2; foreach ($i in 1..3) {$i}
2
DEBUG:    1+ Set-PsDebug -Trace 2; foreach ($i in 1..3) {$i}
3

Example 2: Turn on stepping

This command turns on stepping, and then runs a script that displays the numbers 1, 2, and 3.


PS C:\> Set-PSDebug -Step; foreach ($i in 1..3) {$i}

DEBUG:    1+ Set-PsDebug -Step; foreach ($i in 1..3) {$i}
Continue with this operation?
1+ Set-PsDebug -Step; foreach ($i in 1..3) {$i}
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "Y"):a
DEBUG:    1+ Set-PsDebug -Step; foreach ($i in 1..3) {$i}
1
2
3

Example 3: Turn off debug features

This command turns off all debugging features, and then runs a script that displays the numbers 1, 2, and 3.


PS C:\> Set-PSDebug -Off; foreach ($i in 1..3) {$i}
1
2
3

Example 4: Use strict mode

This command puts Windows PowerShell in strict mode, and then attempts to access a variable that has not yet been set.


PS C:\> set-psdebug -Strict; $NewVar
The variable $NewVar cannot be retrieved because it has not been set yet.
At line:1 char:28
+ Set-PsDebug -strict;$NewVar <<<<

Related topics

Community Additions

ADD
Show:
© 2016 Microsoft