Checking For Switch Existance
Tags: powershell
To check whether a parameter was either passed in by the caller or not, inspect the $PSBoundParameters
automatic variable:
if($PSBoundParameters.ContainsKey('AddHash')) { # switch parameter was explicitly passed by the caller # grab its value $requestparams.Code = $AddHash.IsPresent}else { # parameter was absent from the invocation, don't add it to the request}
If you have multiple switch parameters that you want to pass through, iterate over the entries in $PSBoundParameters
and test the type of each value:
param( [switch]$AddHash, [switch]$AddOtherStuff, [switch]$Yolo)
$requestParams = @{ header = 'value' }
$PSBoundParameters.GetEnumerator() |ForEach-Object { $value = $_.Value if($value -is [switch]){ $value = $value.IsPresent }
$requestParams[$_.Key] = $value}
Sources:
- https://stackoverflow.com/questions/56809557/how-to-check-if-a-powershell-switch-parameter-is-absent-or-false