2015-11-13 11 views
6

Ich habe eine Funktion, die etwa wie folgt aussieht:Wie kann ich Parameter in einer Powershell-Funktion übergeben?

function global:Test-Multi { 
    Param([string]$Suite) 
    & perl -S "$Suite\runall.pl" -procs:$env:NUMBER_OF_PROCESSORS 
} 

Ich möchte dem Benutzer ermöglichen, mehrere Parameter zu Test Multi und leiten sie direkt auf das zugrunde liegende Erbe Perl-Skript angeben.

Bietet Powershell einen Mechanismus, der zusätzliches variadisches Verhalten für diesen Zweck ermöglicht?

Antwort

6

Nachdem Sie Ihren Kommentar gesehen haben, klingt Option 3 genau nach Ihren Wünschen.


Sie haben ein paar Optionen:

  1. Verwenden $args (Kredit hjpotter92's answer)

  2. Explizit Ihre zusätzliche Parameter definieren, dann analysieren sie alle in Ihrer Funktion sie zu Ihrer hinzufügen Perl Anruf.

  3. Verwenden Sie einen einzelnen Parameter mit der ValueFromRemainingArguments argument, z.

    function global:Test-Multi { 
        Param(
         [string]$Suite, 
         [parameter(ValueFromRemainingArguments = $true)] 
         [string[]]$Passthrough 
         ) 
        & perl -S "$Suite\runall.pl" -procs:$env:NUMBER_OF_PROCESSORS @Passthrough 
    } 
    
+0

Ich glaube nicht, dass Ihre "ValueFromRemainingArguments" -Link an den richtigen Ort .... –

+1

@BillyONeal danke, aktualisiert. Es ist ein langwieriges Dokument, daher wird 'STRG + F' für' ValueFromRemainingArguments' empfohlen. – briantist

+2

Codebeispiel hinzugefügt. Vielen Dank! –

1

Ich bin mir nicht sicher, was Sie erreichen möchten, aber die Argumente, die an eine Funktion übergeben werden, sind in der Variablen $args verfügbar, die in der Funktion verfügbar ist.

+0

Aber würde $ args enthalten '-Suite' und seine Umgebung als auch. Ich möchte nur Argumente weiterleiten, die meine Funktion nicht bearbeitet. –

+0

@BillyONeal Sie können das Array "$ args" filtern und den Parameter "-Suite" entfernen. – hjpotter92

+0

sicher, ich kann über Möglichkeiten, es zu tun, aber wenn PS hatte bereits eine formale Möglichkeit, dies zu deklarieren, wollte ich das verwenden. –

Verwandte Themen