考慮這樣的功能:我怎麼能知道PowerShell的功能被忽略了
function Test($foo, $bar)
{
...
}
我們可以把它叫做:
Test -foo $null
Test
我怎麼能知道什麼時候被省略-foo,當它是$ null?
考慮這樣的功能:我怎麼能知道PowerShell的功能被忽略了
function Test($foo, $bar)
{
...
}
我們可以把它叫做:
Test -foo $null
Test
我怎麼能知道什麼時候被省略-foo,當它是$ null?
如果您在使用PowerShell V2或更高版本,您可以使用$ PSBoundParameters變量,它是在目前的範圍內列出了所有綁定參數的字典。
請參閱this博客文章,討論它。
除非是可以從PARAM語句引發異常陷阱(既然PARAM必須是第一個,我看不出這會工作):
function {
trap { "Something failed" }
param($foo = $(throw "Foo not specified"))
...
然後我看不到的方式(你可以用[switch]參數得到同樣的結果:默認或明確-mySwitch:$false
)。
根據理查德的想法的解決方案:
$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