2009-04-07 6 views

ответ

4

Если вы используете Powershell V2 или более поздней версии, вы можете использовать переменную $ PSBoundParameters которая является словарь, который содержит список всех связанных параметров в текущей области.

См. this Сообщение в блоге, которое обсуждает его.

1

Если это не возможно исключению ловушки выброшенного из паров заявления (и так пары должны быть первыми, я не могу видеть, что это будет работать):

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

Тогда я не могу видеть путь (вы получаете то же самое с параметрами [switch]: по умолчанию или явно -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