Primero, las funciones de PowerShell devuelven toda "salida" no capturada. Puede capturar la salida mediante la asignación a una variable y puede pasar por alto la salida mediante la reorientación de $null
por ejemplo:
$arrayList.Add("hi") > $null
Esto haría algo que normalmente una salida como 0 (el índice donde "hi" se ha añadido) pero debido a que redirige a $ nulo, la salida no se tiene en cuenta.
En segundo lugar, echo
es solo un alias para "Write-Output" que escribe el objeto correspondiente en la secuencia de salida. return "blah"
es simplemente una comodidad que es equivalente a:
Write-Output "blah"
return
Por lo que su implementación de la función es equivalente a esto:
function EchoReturnTest(){
Write-Output "afdsfadsf"
Write-Output "blah"
return
}
Si desea "ver" algo de información sobre la consola del host sin que se considere parte de la "salida" de una función a continuación, utilizar Write-Host por ejemplo:
function EchoReturnTest(){
Write-Host "afdsfadsf"
return "blah"
}
también, si usted no tiene parámetros, entonces no necesita el parens al final del nombre de la función de correo. gramo. function EchoReturnTest { return 'blah' }
.
simplemente supongo, pero parece que STDOUT (es decir, a qué eco se está imprimiendo) y el valor de retorno se están volcando en la misma secuencia. Puede forzarlos a separarse diciendo eco para imprimir en STDERR: echo "afdsfadsf" 1> & 2; – mlathe