Parameter mit default-Wert nicht in PsBoundParameters?

Allgemeinen code

Betrachten Sie diesen code:

PS> function Test { param($p='default value') $PsBoundParameters }
PS> Test 'some value'
Key                                                               Value
---                                                               -----
p                                                                 some value
PS> Test
# nothing

Ich würde erwarten, dass $PsBoundParameters enthalten wäre Rekord für $p variable auf beiden Fällen. Ist das so korrekt Verhalten?

Frage

Ich verwenden möchte, splatting, die funktionieren würde, wie dies für eine Vielzahl von Funktionen:

function SomeFuncWithManyRequiredParams {
  param(
    [Parameter(Mandatory=$true)][string]$p1,
    [Parameter(Mandatory=$true)][string]$p2,
    [Parameter(Mandatory=$true)][string]$p3,
  ...other parameters
  )
  ...
}
function SimplifiedFuncWithDefaultValues {
  param(
    [Parameter(Mandatory=$false)][string]$p1='default for p1',
    [Parameter(Mandatory=$false)][string]$p2='default for p2',
    [Parameter(Mandatory=$false)][string]$p3='default for p3',
  ...other parameters
  )
  SomeFuncWithManyRequiredParams @PsBoundParameters
}

Möchte ich nicht nennen SomeFuncWithManyRequiredParams mit allen params aufgezählt:

  SomeFuncWithManyRequiredParams -p1 $p1 -p2 $p2 -p3 $p3 ...

Ist es möglich?

  • Es gibt zwei Fragen, ich würde hier Fragen muss, für jeden parameter in Frage: Warum muss SomeFunc nicht die gleiche Standard-Wert als SimplifiedFunc? Und, wenn die defaults anders sein muss, warum dann nicht SimplifiedFunc dem Benutzer erlauben, um die Standardeinstellung zu überschreiben (da es in diesem Fall, Sie könnten rufen Sie einfach SomeFunc direkt zu überschreiben)?
InformationsquelleAutor stej | 2010-05-11
Schreibe einen Kommentar