The automatic variable $PSBoundParameters is a hashtable containing the parameters passed to a script or a function.
It only includes the values of parameters that were explicitly supplied by the caller, so it does not include any which have been left at the default value.

$PSBoundParameters can be used to call a subordinate function or cmdlet passing the same parameters - PowerShell will automatically splat the hash table's values instead of having to type each of the parameters:
get-otherthing @PSBoundParameters

Within the script/function the parameters would be defined using a param() statement.

Function DemoFunc1 {

   # Display all the passed parameters:

   # or with a switch statement:
   switch ($PSBoundParameters.Keys) {
            'demoText' { write-output ' A value for demoText was supplied' }
            'demoNumber' { write-output ' A value for demoNumber was supplied'  }

   # or looping through all the key/value pairs
   foreach($boundparam in $PSBoundParameters.GetEnumerator()) {
       "Key={0} Value={1}" -f $boundparam.Key,$boundparam.Value

   # or Call a second function passing all the parameters plus any extra if needed:
   DemoFunc2 @PSBoundParameters -ExtraDemoParam 'Testing 123'

Function DemoFunc2 {
   Write-Output "$demoText $demoNumber $ExtraDemoParam"

You can also check for the existence of a specific key with $PSBoundParameters.ContainsKey('demoText') or $PSBoundParameters['demoText']

   If ($PSBoundParameters.ContainsKey('demoText')) {
      Write-Output -InputObject "Text has been included as: '$demoText'"

Adding and Removing key/value pairs

$PSBoundParameters can be manipulated like any other hash table, so it is possible to .add or .remove key/value pairs.


So to add 'myDescription' and remove 'demoNumber':
$PSBoundParameters.Add('myDescription','Hello world')

“A major advantage of age is learning to accept people without passing judgment” ~ Liz Carpenter

Related PowerShell Cmdlets

Get-ParameterValues.ps1 - Script to return both Bound Parameters and Default values.
Test-Params.ps1 - function with example that returns both Bound Parameters and Default values.

Copyright © 1999-2023 SS64.com
Some rights reserved