Fors1k,
return можно и опустить, оставив один
$res, тем не менее смысл делать это невелик. Почему? В виду определения функции как командлета (
CmdletBinding) перехваченное исключение лучше выводить через
Write-Verbose (если такая функция будет запущена с ключом
-Verbose в хост PowerShell будет выведено сообщение об ошибке, а далее будет исполнен код в
finally. Возвратом функции лучше не делать перехваченную ошибку и иже с ней, лучше вернуть нечто существенное, например, значение по умолчанию или некий объект, который при "сцеплении" с другой функцией просто прерывают дальнейшее исполнение. Подобный подход сейчас может показаться несколько замысловатым, однако, на практике, когда дело коснётся классов (если, конечно, коснётся) станут очевидны плюсы такого подхода.
¯\_(ツ)_/¯