-debug requesting confirmation -debug requesting confirmation powershell powershell

-debug requesting confirmation


It sounds like your $DebugPreference variable is set to 'Inquire'.

From Get-Help about_preference_variables:

$DebugPreference------------------    Determines how Windows PowerShell responds to debugging messages     generated by a script, cmdlet or provider, or by a Write-Debug    command at the command line.     Some cmdlets display debugging messages, which are typically very    technical messages designed for programmers and technical support    professionals. By default, debugging messages are not displayed,     but you can display debugging messages by changing the value of     $DebugPreference.    You can also use the Debug common parameter of a cmdlet to display    or hide the debugging messages for a specific command. For more     information, type: "get-help about_commonparameters".    Valid values:     Stop:               Displays the debug message and stops                             executing. Writes an error to the console.     Inquire:            Displays the debug message and asks you                            whether you want to continue. Note that                            adding the Debug common parameter to a                            command--when the command is configured                            to generate a debugging message--changes                            the value of the $DebugPreference variable                            to Inquire.     Continue:           Displays the debug message and continues                            with execution.     SilentlyContinue:   No effect. The debug message is not         (Default)           displayed and execution continues without                            interruption.

Edit: -Debug is also a cmdlet Common Parameter, and by adding CmdletBinding(), it is also a Common Parameter of your script.

From Get-Help about_common_parameters:

COMMON PARAMETER DESCRIPTIONS

-Debug[:{$true | $false}]    Alias: db    Displays programmer-level detail about the operation performed by the    command. This parameter works only when the command generates    a debugging message. For example, this parameter works when a command    contains the Write-Debug cmdlet.    **The Debug parameter overrides the value of the $DebugPreference    variable for the current command, setting the value of $DebugPreference    to Inquire.** Because the default value of the $DebugPreference variable    is SilentlyContinue, debugging messages are not displayed by default.    Valid values:        $true (-Debug:$true). Has the same effect as -Debug.        $false (-Debug:$false). Suppresses the display of debugging        messages when the value of the $DebugPreference is not        SilentlyContinue (the default). 


I think second parameter declarationof the following function can be added any function

function SetDebugPreference {[CmdletBinding()]Param(    [Parameter(        Mandatory=$true,        HelpMessage="Please enter for `$DebugPreference a value`n('SilentlyContinue','Continue' ,'Inquire' or 'Stop')",                    ValueFromPipeline=$true,        ValueFromPipelineByPropertyName=$true,        Position=0       )]    [ValidateSet("SilentlyContinue","Continue" ,"Inquire","Stop")]    [Alias("dbp","dbPref")]        [string]    $dbPreference,    [Parameter(        Mandatory=$false,        ValueFromPipelineByPropertyName=$true,        Position=1       )]    [ValidateSet("SilentlyContinue","Continue" ,"Inquire","Stop")]    [Alias("ldbp","ldbPref")]        [string]    $LocalDebugPreference="Continue") Begin {    Write-Verbose ("Local DebugPreference: " + $DebugPreference)    $DebugPreference=$LocalDebugPreference    Write-Verbose ("Local DebugPreference set: " + $LocalDebugPreference)    Write-Debug "Local debug  test"}   Process {    Write-Verbose ("Global DebugPreference: " + $Global:DebugPreference)    $Global:DebugPreference=$dbPreference    Write-Verbose ("Global DebugPreference set: " + $Global:DebugPreference)}

}