Freigeben über


about_Return

Kurzbeschreibung

Beendet den aktuellen Bereich, der eine Funktion, ein Skript oder ein Skriptblock sein kann.

Lange Beschreibung

Das return Schlüsselwort beendet eine Funktion, ein Skript oder ein Skriptblock. Sie kann verwendet werden, um einen Bereich an einem bestimmten Punkt zu beenden, einen Wert zurückzugeben oder anzugeben, dass das Ende des Bereichs erreicht wurde.

Benutzer, die mit Sprachen wie C oder C# vertraut sind, möchten möglicherweise das schlüsselwort return verwenden, um die Logik des Verlassens eines Bereichs explizit zu machen.

In PowerShell werden die Ergebnisse jeder Anweisung als Ausgabe zurückgegeben, auch ohne eine Anweisung, die das schlüsselwort return enthält. Sprachen wie C oder C# geben nur den Wert oder die Werte zurück, die durch das schlüsselwort return angegeben werden.

Anmerkung

Ab PowerShell 5.0 hat PowerShell mithilfe einer formalen Syntax Sprache zum Definieren von Klassen hinzugefügt. Im Kontext einer PowerShell-Klasse wird nichts aus einer Methode ausgegeben, außer dem, was Sie mithilfe einer return-Anweisung angeben. Weitere Informationen zu PowerShell-Klassen finden Sie in about_Classes.

Syntax

Die Syntax für das Schlüsselwort return lautet wie folgt:

return [<expression>]

Das schlüsselwort return kann allein angezeigt werden, oder es kann wie folgt von einem Wert oder Ausdruck gefolgt werden:

return
return $a
return (2 + $a)

Beispiele

Im folgenden Beispiel wird das schlüsselwort return verwendet, um eine Funktion an einem bestimmten Punkt zu beenden, wenn eine bedingte Bedingung erfüllt ist. Ungerade Zahlen werden nicht multipliziert, da die Rückgabeanweisung beendet wird, bevor diese Anweisung ausgeführt werden kann.

function MultiplyEven
{
    param($Number)

    if ($Number % 2) { return "$Number is not even" }
    $Number * 2
}

1..10 | ForEach-Object {MultiplyEven -Number $_}
1 is not even
4
3 is not even
8
5 is not even
12
7 is not even
16
9 is not even
20

In PowerShell können Werte zurückgegeben werden, auch wenn das schlüsselwort return nicht verwendet wird. Die Ergebnisse jeder Anweisung werden zurückgegeben. Die folgenden Anweisungen geben beispielsweise den Wert der $a-Variablen zurück:

$a
return

Die folgende Anweisung gibt auch den Wert von $azurück:

return $a

Das folgende Beispiel enthält eine Anweisung, die dem Benutzer mitteilen soll, dass die Funktion eine Berechnung ausführt:

function Calculation {
    param ($Value)

    "Please wait. Working on calculation..."
    $Value += 73
    return $Value
}

$a = Calculation 14

Das "Bitte warten." Die Zeichenfolge „Working on calculation...“ wird nicht angezeigt. Stattdessen wird sie der variablen $a zugewiesen, wie im folgenden Beispiel gezeigt:

PS> $a
Please wait. Working on calculation...
87

Sowohl die Informationszeichenfolge als auch das Ergebnis der Berechnung werden von der Funktion zurückgegeben und der variablen $a zugewiesen.

Wenn Sie eine Meldung in Ihrer Funktion anzeigen möchten, beginnend mit PowerShell 5.0, können Sie den Information Stream verwenden. Der folgende Code korrigiert das obige Beispiel, indem er das Cmdlet Write-Information verwendet und die InformationAction- auf Continueeinstellt.

function Calculation {
    param ($Value)

    Write-Information "Please wait. Working on calculation..." -InformationAction Continue
    $Value += 73
    return $Value
}

Nun wird die Informationsnachricht im Host angezeigt und nicht der Variablen zugewiesen.

PS> $a = Calculation 14
Please wait. Working on calculation...
PS> $a
87

Rückgabewerte und die Pipeline

Wenn Sie eine Sammlung aus Ihrem Skriptblock oder Ihrer Funktion zurückgeben, hebt PowerShell die Registrierung der Member automatisch auf und übergibt sie jeweils einzeln durch die Pipeline. Dies liegt an der Einzelverarbeitung in PowerShell. Weitere Informationen finden Sie unter about_Pipelines.

Dieses Konzept wird durch die folgende Beispielfunktion veranschaulicht, die ein Array von Zahlen zurückgibt. Die Ausgabe der Funktion wird an das Cmdlet Measure-Object weitergeleitet, das die Anzahl der Objekte in der Pipeline zählt.

function Test-Return
{
    $array = 1,2,3
    return $array
}
Test-Return | Measure-Object
Count    : 3
Average  :
Sum      :
Maximum  :
Minimum  :
Property :

Wenn Sie erzwingen möchten, dass ein Scriptblock oder eine Funktion die Auflistung als einzelnes Objekt an die Pipeline zurückgibt, verwenden Sie eine der folgenden beiden Methoden:

  • Unärer Arrayausdruck

    Wenn Sie einen unären Ausdruck verwenden, können Sie den Rückgabewert als einzelnes Objekt wie im folgenden Beispiel veranschaulicht an die Pipeline senden.

    function Test-Return
    {
        $array = 1,2,3
        return (, $array)
    }
    Test-Return | Measure-Object
    
    Count    : 1
    Average  :
    Sum      :
    Maximum  :
    Minimum  :
    Property :
    
  • Write-Output mit NoEnumerate-Parameter.

    Sie können auch das cmdlet Write-Output mit dem parameter NoEnumerate verwenden. Im folgenden Beispiel wird das Cmdlet Measure-Object verwendet, um die Objekte zu zählen, die von der Beispielfunktion mit dem Schlüsselwort return an die Pipeline gesendet wurden.

    function Test-Return
    {
        $array = 1, 2, 3
        return Write-Output -NoEnumerate $array
    }
    
    Test-Return | Measure-Object
    
    Count    : 1
    Average  :
    Sum      :
    Maximum  :
    Minimum  :
    Property :
    

Siehe auch