D'abord, les fonctions PowerShell renvoient toutes les "sorties" non capturées. Vous pouvez capturer la sortie en attribuant à une variable et vous pouvez ignorer la sortie par la redirection vers $null
par exemple:
$arrayList.Add("hi") > $null
Ce serait quelque chose normalement sortie comme 0 (l'indice où a été ajouté « salut »), mais parce que nous avons réexpédié à $ null, la sortie est ignorée.
Ensuite, echo
est juste un alias pour "Write-Output" qui écrit l'objet correspondant dans le flux de sortie. return "blah"
est juste une commodité qui équivaut à:
Write-Output "blah"
return
Ainsi, votre implémentation de la fonction est équivalente à ceci:
function EchoReturnTest(){
Write-Output "afdsfadsf"
Write-Output "blah"
return
}
Si vous voulez « voir » quelques informations sur la console hôte sans que cela soit considéré une partie de la « sortie » d'une fonction puis utilisez Write-Host par exemple:
function EchoReturnTest(){
Write-Host "afdsfadsf"
return "blah"
}
aussi, si vous avez pas de paramètres vous n'avez pas besoin des parens à la fin du nom de la fonction e. g. function EchoReturnTest { return 'blah' }
.
juste une supposition, mais il ressemble à STDOUT (c'est-à-dire ce que l'écho est l'impression) et la valeur de retour sont déversés dans le même flux. Vous pourriez les forcer à être séparés en disant à echo d'imprimer sur STDERR: echo "afdsfadsf" 1> & 2; – mlathe