PowerShell tiene una semántica de retorno realmente extraña, al menos cuando se ve desde una perspectiva de programación más tradicional. Hay dos ideas principales para entender:
- Toda la salida se captura y se devuelve.
- La palabra clave return realmente solo indica un punto de salida lógico
Por lo tanto, los siguientes dos bloques de script harán exactamente lo mismo:
$a = "Hello, World"
return $a
$a = "Hello, World"
$a
return
La variable $ a en el segundo ejemplo se deja como salida en la tubería y, como se mencionó, se devuelve toda la salida. De hecho, en el segundo ejemplo, podría omitir el retorno por completo y obtendría el mismo comportamiento (el retorno estaría implícito a medida que la función se completa y sale de forma natural).
Sin más de su definición de función, no puedo decir por qué está obteniendo un objeto PSMethod. Supongo que probablemente tengas algo en línea que no se está capturando y se está colocando en la tubería de salida.
También vale la pena señalar que probablemente no necesite esos puntos y comas, a menos que esté anidando varias expresiones en una sola línea.
Puede leer más sobre la semántica de retorno en la página about_Return en TechNet, o invocando el help return
comando desde PowerShell.