Hi,
I have just found very strong behavior of $PSCmdlet.ShouldProcess(). I want to have it in my advanced function (I want to use -Confirm and -WhatIf) but I don’t want to see it’s verbose stream. I want to see only my custom streams (Write-Verbose). Please do you have an idea what it reason that the function output it? How to disable it?
Thank you,
Bor
Function Set-SomeThing {
[CmdletBinding(
DefaultParametersetName = 'Bla',
SupportsShouldProcess = $true,
PositionalBinding = $false,
ConfirmImpact = 'Medium'
)]
Param(
[Parameter(
Mandatory = $false,
Position = 0,
ParameterSetName = 'Bla'
)]
[string] $Bla,
[Parameter(
Mandatory = $false,
ParameterSetName = 'Bla'
)]
[string] $Force
)
Begin {
# Default: $VerbosePreference = 'SilentlyContinue'
# -Verbose: $VerbosePreference = 'Continue'
}
Process {
Write-Verbose -Message 'Something that I want to see'
$VerbosePreference = 'SilentlyContinue'
$global:VerbosePreference = 'SilentlyContinue'
$script:VerbosePreference = 'SilentlyContinue'
if ($Force -or $PSCmdlet.ShouldProcess('I do NOT want to see this', 'Action')) {
'Action'
}
}
End {
}
}
Set-SomeThing -Verbose
Output:
VERBOSE: Something that I want to see
VERBOSE: Performing the operation "Action" on target "I do NOT want to see this".
Action