Parameter variables

by willsteele at 2012-10-23 08:54:04

I need to check all of my parameters in a given function to see what is being used and what is not. Is there a variable I can examine rather than having to look at each parameter one by one?
by DonJ at 2012-10-23 15:45:56
Well, $PSBoundParameters has all bound parameters; this won’t include any parameter which received pipeline input, though. I don’t think. But you sort of still have to look at each one, right? It’s a hashtable, so the keys are your parameter names: $PSBoundParameters.ContainsKey(‘whatever’) would return $True if that parameter was used.

See … eters.aspx.
by Jason_Yoder_MCT at 2012-10-23 16:58:13

Here is something to take a look at. There are two functions below.

Test-Params is the one you are most interested in. It simply list all the parameters of a function and returns True or False. True if the parameter has a value.

Test is a function with 3 parameters. It passes its parameter information to Test-Function.

The calling statement only sends information to 2 of the parameters. You should get something like this in back:

Parameter HasData
--------- -------
A True
b True
c False

What you do from here is up to you. Have fun!

Function Test-Params
Param (
ForEach ($Item2 in $Set2)
$Obj = New-Object -TypeName PSObject
$Obj | Add-Member -MemberType NoteProperty -Name “Parameter” -Value $Item2
$Obj | Add-Member -MemberType NoteProperty -Name “HasData” -Value $False

ForEach ($Item1 in $Set1)

If ($Item1 -eq $Item2)
$Obj.HasData = $True

Write-Output $Obj


Function test


Test-Params ($PSBoundParameters.keys) ((Get-Command test).Parameters).keys


test ‘Hello’ 5
by Jason_Yoder_MCT at 2012-10-23 17:00:26

Like you answer better.