Comment retourner une valeur dans PowerShell
-
Utiliser le mot-clé
return
dans PowerShell - Valeurs de retour dans le pipeline dans PowerShell
- Définir des classes dans PowerShell 5

En général, le mot-clé return
quitte une fonction, un script ou un bloc de script. Par exemple, nous pouvons l’utiliser pour quitter un étendue à un moment spécifique, retourner une valeur ou indiquer que la fin de l’étendue a été atteinte.
Cependant, dans Windows PowerShell, utiliser le mot-clé return
peut être un peu déroutant car votre script peut imprimer une sortie que vous ne vous attendiez pas.
Cet article discutera de la façon dont le mot-clé return
fonctionne et comment les utiliser correctement dans Windows PowerShell.
Utiliser le mot-clé return
dans PowerShell
Le bloc de script ci-dessous est la forme de base de la syntaxe du mot-clé return
.
return <expression>
Le mot-clé return
peut apparaître seul, ou une valeur ou une expression peut le suivre. Le mot-clé return
seul retournera la ligne de commande à son point d’appel précédent.
return
return $a
return (1 + $a)
L’exemple ci-dessous utilise le mot-clé return
pour quitter une fonction si une condition est remplie à un moment spécifique. Dans cet exemple, les nombres impairs ne sont pas multipliés car l’instruction de retour se situe avant que cette instruction puisse s’exécuter.
function MultiplyOnlyEven {
param($num)
if ($num % 2) { return "$num is not even" }
$num * 2
return
}
1..10 | ForEach-Object { MultiplyOnlyEven -Num $_ }
Sortie :
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
Windows PowerShell a une sémantique de retour déroutante vue d’une perspective de programmation plus native. Il y a deux idées principales que nous devons considérer :
- Toute sortie est capturée et renvoyée.
- Le mot-clé return indique un point de sortie logique.
Cela dit, les deux blocs de script suivants retourneront la valeur de la variable $a
.
Mot-clé Return avec une expression :
$a = "Hello World"
return $a
Mot-clé Return sans expression :
$a = "Hello World"
$a
return
Le mot-clé return
n’est également pas nécessaire dans le deuxième bloc de script, car appeler la variable dans la ligne de commande renverra explicitement cette variable.
Valeurs de retour dans le pipeline dans PowerShell
Lorsque vous renvoyez une valeur de votre bloc de script ou fonction, Windows PowerShell extrait automatiquement les membres et les pousse un par un à travers le pipeline. La raison de ce cas d’utilisation est due au traitement un par un de Windows PowerShell.
La fonction suivante démontre cette idée qui retournera un tableau de nombres.
function Test-Return {
$array = 1, 2, 3
return $array
}
Test-Return | Measure-Object | Select-Object Count
Sortie :
Count
-----
3
En utilisant la cmdlet Test-Return
, la sortie de la fonction ci-dessous est envoyée à la cmdlet Measure-Object
. La cmdlet comptera le nombre d’objets dans le pipeline, et, une fois exécutée, le compte retourné est trois.
Pour faire en sorte qu’un bloc de script ou une fonction ne retourne qu’un seul objet au pipeline, utilisez l’une des méthodes suivantes :
Utilisation de l’expression de tableau unaire dans PowerShell
Utiliser une expression unaire peut envoyer votre valeur de retour dans le pipeline en tant qu’objet unique, comme le montre l’exemple suivant.
function Test-Return {
$array = 1, 2, 3
return (, $array)
}
Test-Return | Measure-Object | Select-Object Count
Sortie :
Count
-----
1
Utiliser Write-Output
avec le paramètre NoEnumerate
dans PowerShell
Nous pouvons également utiliser la cmdlet Write-Output
avec le paramètre -NoEnumerate
. L’exemple ci-dessous utilise la cmdlet Measure-Object
pour compter les objets envoyés au pipeline à partir de la fonction d’exemple par le mot-clé return
.
Code d’exemple :
function Test-Return {
$array = 1, 2, 3
return Write-Output -NoEnumerate $array
}
Test-Return | Measure-Object | Select-Object Count
Sortie :
Count
-----
1
Une autre méthode pour forcer le pipeline à ne retourner qu’un seul objet est introduite dans la version 5 de PowerShell, que nous discuterons dans la section suivante de l’article.
Définir des classes dans PowerShell 5
Avec Windows PowerShell version 5.0, nous pouvons maintenant créer et définir nos classes personnalisées. Transformez votre fonction en une classe, et le mot-clé return
ne retournera que l’objet unique qui le précède immédiatement.
Code d’exemple :
class test_class {
[int]return_what() {
Write-Output "Hello, World!"
return 1000
}
}
$tc = New-Object -TypeName test_class
$tc.return_what()
Sortie :
1000
Si la classe ci-dessus est une fonction, elle retournera toutes les valeurs stockées dans le pipeline.
Sortie :
Hello World!
1000
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn