2009-04-07 8 views
3

は、このような機能を検討省略されていることを知ることができる:どのように私はPowerShellの機能パラメータは

function Test($foo, $bar) 
{ 
    ... 
} 

我々はそれを呼び出すことができます。

-fooが省略されたときに私が知ることができますどのように
Test -foo $null 
Test 

、それ$ nullでしたか?

答えて

4

するとあなたはPowerShellのV2以降を使用している場合は、あなたは現在のスコープで、すべてのバインドされたパラメータを示した辞書である$ PSBoundParameters変数を使用することができます。

これについては、thisのブログ記事を参照してください。

1

それはのparamの文からスロートラップの例外に可能である(とparamは最初にしなければならないため、私はこれが働くだろう見ることができない)場合を除き:

function { 
    trap { "Something failed" } 
    param($foo = $(throw "Foo not specified")) 
    ... 

その後、私は道を見ることはできません([スイッチ]パラメータで同じことができます:デフォルトまたは明示的に-mySwitch:$false)。リチャードの考え方に基づいて

1

ソリューション:

$missed = "{716C1AD7-0DA6-45e6-854E-4B466508EB96}" 

function Test($foo = $missed, $bar) 
{ 
    if($foo -eq $missed) { 
     Write-Host 'Missed' 
    } 
    else 
    { 
     Write-Host "Foo: $foo" 
    } 
} 

Test -foo $null 
Test 
関連する問題