PowerShell має насправді дурну семантику повернення - принаймні, якщо дивитися з традиційної перспективи програмування. Є дві основні ідеї, щоб обернути голову:
- Весь вихідний сигнал збирається та повертається
- Ключове слово повернення дійсно просто вказує на логічну точку виходу
Таким чином, наступні два блоки сценаріїв будуть ефективно робити те саме:
$a = "Hello, World"
return $a
$a = "Hello, World"
$a
return
Змінна $ a у другому прикладі залишається як вихід на конвеєр, і, як було сказано, весь вихід повертається. Насправді, у другому прикладі ви могли повністю опустити повернення, і ви отримали б таку саму поведінку (повернення мається на увазі, оскільки функція, природно, завершується і залишається).
Без більшого визначення вашої функції я не можу сказати, чому ви отримуєте об'єкт PSMethod. Я здогадуюсь, що у вас, мабуть, є щось на кілька ліній вгору, що не захоплюється і розміщується на вихідному конвеєрі.
Варто також зазначити, що вам, мабуть , не потрібні такі крапки з комою, якщо ви не вкладаєте кілька виразів у одному рядку.
Докладніше про семантику повернення можна прочитати на сторінці about_Return в TechNet або за допомогою виклику help return
команди від самого PowerShell.