Set-PSDebug
Set-PSDebug [-Off] [<CommonParameters>]
Set-PSDebug [-Step] [-Strict] [-Trace <Int32>] [<CommonParameters>]
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 [<SwitchParameter>]
- Default value is False
- Accepts pipeline input False
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.
-Step [<SwitchParameter>]
- Default value is False
- Accepts pipeline input False
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.
-Strict [<SwitchParameter>]
- Default value is False
- Accepts pipeline input False
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.
-Trace <Int32>
- Default value is None
- Accepts pipeline input False
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.
<CommonParameters>
This cmdlet supports the common parameters: Verbose, Debug,ErrorAction, ErrorVariable, WarningAction, WarningVariable,OutBuffer, PipelineVariable, and OutVariable.
Inputs
NoneOutputs
NoneExamples
-
Set the trace level to 2:
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
This command sets the trace level to 2, and then runs a script that displays the numbers 1, 2, and 3.
-
Turn on stepping:
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
This command turns on stepping, and then runs a script that displays the numbers 1, 2, and 3.
-
Turn off debug features:
PS C:\> Set-PSDebug -Off; foreach ($i in 1..3) {$i} 1 2 3
This command turns off all debugging features, and then runs a script that displays the numbers 1, 2, and 3.
-
Use strict mode:
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 <<<<
This command puts Windows PowerShell in strict mode, and then attempts to access a variable that has not yet been set.
Additional Notes
This work is licensed under a Creative Commons Attribution 4.0 International. It is attributed to Microsoft Corporation and can be found here.
PowerShell Commands