-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)}
}