Well, it and things associated with ShoudProcess is a matter of what you are trying o do at the time.
Function nesting has impact, chosen cmdlet has an impact, etc., at their time of use. Full disclousure, this is not something I really use, as to date I’ve had little reason to. However, one of the better write-ups I’ve seen on the whole ShouldProcess thing is here:
PowerShell SupportsShouldProcess Worst & Best Practices
Maybe you can glean a clear thought process after reading it. This is of course assuming you have already read the following.
Based on the notes I keep on this an other topics -
It has been positioned that [CmdletBinding(ConfirmImpact=“High”) only tells your script the behaviour to use when you use the ShouldProcess method. It does NOT set the ConfirmPreference.
The call to the ShouldProcess method displays a confirmation prompt only when the ConfirmImpact argument is equal to or greater than the value of the $ConfirmPreference preference variable where as ConfirmImpact is an enum, where High=3, Medium=2, Low=1, None=0
New-Item on an item that doesn’t exist has a Confirm of Med(2), 2 < High(3), so no prompt.
When you set it to Medium again, 2 -eq 2, it prompts.
Remove-Item has a default impact of High(3) since it results in data loss, 3 -ge (any confirm preference), so it always prompts.