Hvordan kan jeg vite at Powershell funksjon parameteren er utelatt

stemmer
3

Vurdere en slik funksjon:

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

Vi kan kalle det:

Test -foo $null
Test

Hvordan kan jeg vite når -foo ble utelatt, og når det var $ null?

Publisert på 07/04/2009 klokken 22:57
kilden bruker
På andre språk...                            


3 svar

stemmer
1

Med mindre det er mulig å felle unntak kastet fra param uttalelse (og siden param må være den første, jeg kan ikke se at dette ville fungere):

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

Så jeg kan ikke se en måte (du får det samme med [Bytt] parametere: standard eller eksplisitt -mySwitch:$false).

Svarte 07/04/2009 kl. 23:05
kilden bruker

stemmer
1

Løsningen basert på Richard ide:

$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
Svarte 07/04/2009 kl. 23:26
kilden bruker

stemmer
4

Hvis du bruker Powershell V2 eller senere, kan du bruke $ PSBoundParameters variabel som er en ordbok som viser alle innbundne parametre på dagens omfang.

Se dette blogginnlegget som diskuterer det.

Svarte 07/04/2009 kl. 23:28
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more