L'obtention de tous les Paramètres Nommés à partir de Powershell vides compris, et régler

J'essaie de trouver un moyen d'obtenir toutes les informations sur les paramètres d'un script powershell. Ex script:

function test()
{
    Param(
        [string]$foo,
        [string]$bar,
        [string]$baz = "baz"
    )

    foreach ($key in $MyInvocation.BoundParameters.keys)
    {
        write-host "Parameter: $($key) -> $($MyInvocation.BoundParameters[$key])"
    }
}
test -foo "foo!"

J'aimerais obtenir les valeurs de $bar et $baz de façon dynamique, sans connaître les noms des paramètres à l'avance.

J'ai regardé à travers $MyInvocation propriétés et de méthodes mais je ne vois pas autre chose que les paramètres définis/passé.

Mise à jour 1:

Je suis proche de l'obtenir avec:

function test()
{
    Param(
        [string]$foo,
        [string]$bar,
        [string]$baz = "baz"
    )
    foreach($var in (get-variable -scope private))
    {
        write-host "$($var.name) -> $($var.value)"
    }
}
test -foo "foo!"

Si je pouvais filtrer les paramètres de script vs les paramètres par défaut, je serais bon pour aller.

Mise à jour 2:
Le final de la solution de travail ressemble à ceci:

function test {
    param (
          [string] $Bar = 'test'
        , [string] $Baz
        , [string] $Asdf
    )
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var)
        {
            write-host "$($var.name) > $($var.value)"
        }
    }
}

test -asdf blah;

OriginalL'auteur Eric Longstreet | 2014-02-04