Partager via


about_Return

Brève description

Quitte l’étendue actuelle, qui peut être une fonction, un script ou un scriptblock.

Description longue

Le return mot clé quitte une fonction, un script ou un scriptblock. 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 le mot clé return 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 mot clé return.

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 instruction return. Vous pouvez en savoir plus sur les classes PowerShell dans about_Classes.

Syntaxe

La syntaxe du mot clé return est la suivante :

return [<expression>]

Le mot clé return 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 le mot clé return 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 le mot clé return n’est pas utilisé. Les résultats de chaque instruction sont renvoyés. Par exemple, les instructions suivantes retournent la valeur de la variable $a :

$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

La chaîne « Veuillez patienter. Calcul en cours... » ( Please wait. Working on calculation) n’est pas affichée. Au lieu de cela, il est affecté à la variable $a, 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 variable $a.

Si vous souhaitez afficher un message dans votre fonction, à partir de PowerShell 5.0, vous pouvez utiliser le flux de Information. Le code ci-dessous corrige l’exemple ci-dessus en utilisant le cmdlet Write-Information avec un InformationAction paramétré sur Continue.

function Calculation {
    param ($Value)

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

Maintenant, le message d’information est affiché dans l’hôte et n’est pas assigné à la variable.

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

Valeurs de retour et pipeline

Lorsque vous retournez une collection à partir de votre scriptblock ou fonction, PowerShell désinscrit automatiquement les membres et les transmet un à la fois via le pipeline. Cela est dû au traitement un à la fois 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 de commande Measure-Object 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 scriptblock 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 de commande Write-Output avec le paramètre NoEnumerate. L'exemple ci-dessous utilise l'applet de commande Measure-Object pour compter les objets envoyés au pipeline par la fonction d'exemple à l'aide du 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