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’appletMeasure-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 :