Is it possible to check if -Verbose argument was given in Powershell?

More generally: since one might specify -Verbose:$false on the command line, the following code handles that case. It also works for any other switch parameter:

$Verbose = $false
if ($PSBoundParameters.ContainsKey('Verbose')) { # Command line specifies -Verbose[:$false]
    $Verbose = $PsBoundParameters.Get_Item('Verbose')
}

Inside your script check this:

$PSCmdlet.MyInvocation.BoundParameters["Verbose"].IsPresent

Also available: Check the parameter '$VerbosePreference'. If it is set to 'SilentlyContinue' then $Verbose was not given at the command line. If it is set to '$Continue' then you can assume it was set.

Also applies to the following other common parameters:

Name                           Value
----                           -----
DebugPreference                SilentlyContinue
VerbosePreference              SilentlyContinue
ProgressPreference             Continue
ErrorActionPreference          Continue
WhatIfPreference               0
WarningPreference              Continue
ConfirmPreference              High

Taken from an MSDN blog page from long ago... so it should be relevant with relatively old versions of Powershell. Also see "Get-Help about_CommonParameters" in Powershell v4.

Tags:

Powershell