about_Return

Description courte

Quitte l'étendue active (fonction, script ou bloc de script).

Description longue

Le return mot clé quitte une fonction, un script ou un bloc de script. Il peut être utilisé pour quitter une étendue à un point spécifique, retourner une valeur ou indiquer que la fin de l’étendue a été atteinte.

Les utilisateurs familiarisés avec des langages tels que C ou C# peuvent utiliser les return mot clé pour rendre la logique de quitter une étendue explicite.

Dans PowerShell, les résultats de chaque instruction sont retournés sous forme de sortie, même sans instruction qui contient le mot clé Return. Les langages comme C ou C# retournent uniquement la valeur ou les valeurs spécifiées par le return mot clé.

Remarque

À compter de PowerShell 5.0, PowerShell a ajouté le langage pour définir des classes à l’aide de la syntaxe formelle. Dans le contexte d’une classe PowerShell, rien n’est sortie d’une méthode, sauf ce que vous spécifiez à l’aide d’une return instruction. Vous pouvez en savoir plus sur les classes PowerShell dans about_Classes.

Syntaxe

La syntaxe de la return mot clé est la suivante :

return [<expression>]

Le return mot clé peut apparaître seul, ou il peut être suivi d’une valeur ou d’une expression, comme suit :

return
return $a
return (2 + $a)

Exemples

L’exemple suivant utilise la return mot clé pour quitter une fonction à un point spécifique si une condition est remplie. Les nombres impairs ne sont pas multipliés, car l’instruction return se termine avant que cette instruction ne puisse s’exécuter.

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

Dans PowerShell, les valeurs peuvent être retournées même si la return mot clé n’est pas utilisée. Les résultats de chaque instruction sont retournés. Par exemple, les instructions suivantes retournent la valeur de la $a variable :

$a
return

L’instruction suivante retourne également la valeur de $a:

return $a

L’exemple suivant inclut une instruction destinée à informer l’utilisateur que la fonction effectue un calcul :

function calculation {
    param ($value)

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

$a = calculation 14

Le « S’il vous plaît attendre. Travailler sur le calcul... la chaîne n’est pas affichée. Au lieu de cela, elle est affectée à la $a variable, comme dans l’exemple suivant :

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

La chaîne d’information et le résultat du calcul sont retournés par la fonction et affectés à la $a variable.

Si vous souhaitez afficher un message dans votre fonction, à partir de PowerShell 5.0, vous pouvez utiliser le Information flux. Le code ci-dessous corrige l’exemple ci-dessus à l’aide de l’applet Write-Information de commande avec un InformationAction objet Continue.

function calculation {
    param ($value)

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

$a = calculation 14
Please wait. Working on calculation...
C:\PS> $a
87

Retourner des valeurs et le pipeline

Lorsque vous retournez une collection à partir de votre bloc de script ou de votre fonction, PowerShell désinscrit automatiquement les membres et les transmet un à la fois via le pipeline. Cela est dû au traitement unique à temps de PowerShell. Pour plus d’informations, consultez about_pipelines.

Ce concept est illustré par l’exemple de fonction suivant qui retourne un tableau de nombres. La sortie de la fonction est redirigée vers l’applet Measure-Object de commande qui compte le nombre d’objets dans le pipeline.

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

Pour forcer un bloc de script ou une fonction à retourner une collection en tant qu’objet unique au pipeline, utilisez l’une des deux méthodes suivantes :

  • Expression de tableau unaire

    L’utilisation d’une expression unaire vous permet d’envoyer votre valeur de retour vers le bas du pipeline en tant qu’objet unique, comme illustré par l’exemple suivant.

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

    Vous pouvez également utiliser l’applet Write-Output de commande avec le paramètre NoEnumerate . L’exemple ci-dessous utilise l’applet Measure-Object de commande pour compter les objets envoyés au pipeline à partir de l’exemple de fonction par l’mot clé return .

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

Voir aussi