funkcje w powershell to bardzo dziwny i nieintuicyjny wynalazek. należy więc intuicję zmienić, a to oznacza – zrozumieć jak ten diabeł działa. pełny art w wer. angielskiej polecam przeczytać, ponieważ to w pełni wyjaśnia problem. ja przedstawię go po swojemu – czyli w skrócie i na przykładach q:

weźmy prostą funkcję testową:

znając trochę języki programowania można się spodziewać, że na ekranie pojawi się:

będę liczył

coś!!!aaaa

tymczasem realny output będzie zaskaqjący:

cośbęde liczył!!!aaaa

o co cho? cała funkcja konwertowana jest w locie na obiekt. wszystko, co ‘wychodzi’ z funkcji traktowane jest jako atrybut obiektu. w związq z tym:

  • return nie jest potrzebny – kończy wykonanie funkcji, ale zwykły output wystarczy
  • każdy output jest jednym z atrybutów obiektu zwracanego przez funkcję

przy tej samej funkcji można zrobić inne doświadczenie:

które pokaże, że zwracana jest dwuelementowa tablica zawierająca “będę liczył” oraz “!!!aaaa”.

funkcja w najprostszej postaci może wyglądać zatem tak:

jeśli zatem w funkcji wykorzystywana jest jakaś funkcja zwracająca cokolwiek na ekran, niezbędne jest dodanie “|out-null” żeby nie otrzymać tego jako atrybut w zwracanym obiekcie.

eN.