Magia splattingu

•10 kwietnia, 2022 • Dodaj komentarz

ps-plamaJedną z moich ulubionych funkcji w PowerShellu jest splatting (nie podejmuję się tłumoczenia) – możliwość przekazywania parametrów do poleceń za pomocą tablicy skrótów. Przydaje się to w różnych sytuacjach – ja skupię się na kilku z nich. Przede wszystkim – uruchamianie poleceń z licznymi i przydługimi parametrami. Po drugie – współdzielenie parametrów pomiędzy całą grupą poleceń, które parametry te współdzielą. Wreszcie przekazywanie poleceń z “rodzica” do “potomstwa” z wykorzystaniem zmiennej wbudowanej PSBoundParameters.

Czytaj dalej ‚Magia splattingu’

Błędy w REST – zamieść pod dywan

•30 marca, 2022 • Dodaj komentarz

pod-dywanW poprzednim wpisie wspomniałem o tym, jak czasem praca z REST w PowerShellu jest nieco kłopotliwa i wymaga wiedzy o tym, co PowerShell dokładnie robi (lub raczej: czego nie robi, mimo że powinien). Dziś o nieco innym problemie, który na szczęście w nowszych wersjach PowerShella jest już usunięty i o tym, jak podobny efekt uzyskać w Windows PowerShell (z którego, jak sadzę, nadal korzysta większość użytkowników PowerShella).

Czytaj dalej ‚Błędy w REST – zamieść pod dywan’

Gdy praca z REST bokiem wychodzi…

•27 marca, 2022 • Dodaj komentarz

cardboard-box-gf4a092a3e_280Praca w środowisku hybrydowym, z mieszanką serwerów korzystających z Windows z (przeważającą) flotą Linuksów wymaga wspólnego języka. W naszej firmie korzystamy z REST i nie tylko oferujemy końcówki dla innych działów, ale sami też staramy się korzystać z tych końcówek w naszych funkcjach. Wszystko to działa na komercyjnej wersji PowerShell Universal (PSU). I działa całkiem sprawnie – jedna rzecz tylko nie dawała nam spokoju, przesyłaniem parametrów do naszych końcówek w sposób “PowerShellowy”.

Czytaj dalej ‚Gdy praca z REST bokiem wychodzi…’

Dlaczego warto czytać pomoc?

•25 marca, 2022 • Dodaj komentarz

ps-helpDziś będzie krótko – o tym dlaczego warto czytać pomoc. PowerShell oferuje ją na każdym kroku i często zanim zaczniemy krzyczeć: “Bug! Bug!” warto sprawdzić, czy aby na pewno zachowanie jest sprzeczne z tym, co “autor miał na myśli”.

Czytaj dalej ‚Dlaczego warto czytać pomoc?’

Pomocy! Zepsułem pomoc!

•11 kwietnia, 2021 • Dodaj komentarz

Popsuta-pomocPowerShell posiada bardzo przydatną funkcję: pomoc do funkcji i skryptów definiowaną za pomocą komentarza na początku, końcu (sprawdza się w przypadku skryptów i funkcji) lub tuż przed definicją (naturalnie, działa dobrze tylko w przypadku funkcji). Niestety, pomoc ta jest dość wrażliwa i niewielka literówka może sprawić, że cały nasz wysiłek włożony w jej przygotowanie pójdzie na marne i nasza pomoc w formie komentarza stanie się zwyczajnym komentarzem, nie oferującym pomocy w oczekiwany sposób.

Czytaj dalej ‚Pomocy! Zepsułem pomoc!’

Tworzymy moduł: testy jednostkowe

•30 grudnia, 2020 • Dodaj komentarz

neonowkaKiedy kilka lat temu usłyszałem po raz pierwszy o testach jednostkowych to uznałem, że to chyba nadmiar czasu po stronie moich kolegów powoduje, że zamiast przeznaczyć czas na pisanie kodu, który coś robi, piszą kod, który udaje jedynie, że coś robi. W pewnym jednak momencie postanowiłem spróbować i pomysłem tym zaraziłem swoich kolegów. A może to oni zarazili mnie…? Tak czy inaczej, zaczęliśmy pisać testy do naszych nowotworzonych funkcji i bardzo szybko okazało się, że testy robią i to bardzo dużo.
Czytaj dalej ‚Tworzymy moduł: testy jednostkowe’

PowerShell Remoting i gMSA

•8 listopada, 2020 • Dodaj komentarz

remote controlW naszej firmie staramy się (na ile to możliwe) eliminować konta serwisowe, zastępując je kontami gMSA (Group Managed Service Account). Co prawda nadal istnieje wiele rozwiązań (w tym rozwiązań Microsoft), gdzie korzystanie z takich kont nie jest możliwe, ale i tak udało nam się znaleźć wiele miejsc, gdzie sprawdzają się one bardzo dobrze. Jest tylko jeden problem z kontami tego typu: ciężko przetestować ich działanie. Jest jeden wygodny sposób, który wymaga korzystania z PowerShella w wersji 5.1 – dedykowane końcówki PowerShell Remoting.
Czytaj dalej ‚PowerShell Remoting i gMSA’

Tworzymy moduł: pomoc się pisze!

•28 października, 2020 • Dodaj komentarz

pisze-pomocDziś przyjrzymy się modułowi, dzięki któremu tworząc pomoc możemy skorzystać z tego samego języka, przy pomocy którego tworzone są strony dokumentacji – markdown. Co prawda pisząc pomoc do naszych modułów w PowerShellu możemy korzystać z pomocy zawartej w komentarzu, dzięki czemu pisanie pomocy jest dość proste, to jednak ciężko wykorzystać tę samą pomoc w innych miejscach (takich jak strony pomocy). Pliki markdown świetnie sprawdzają się w takim scenariuszu. Wykorzystamy do tego moduł platyPS.

Czytaj dalej ‚Tworzymy moduł: pomoc się pisze!’

Dot Foreach, Dot Where

•10 października, 2020 • Dodaj komentarz

DotDotDotSądzę, że prawie każdy, kto z pracy w PowerShellu czerpie przyjemność ma swoich „faworytów” – te elementy składni, których regularnie (nad)używa… O jednym z takich „faworytów” wspomniałem Wam ostatnio – operator switch to w mojej ocenie najlepsze co zdarzyło się od pojawienia się krojonego chleba. Dziś chciałem Wam przybliżyć element składni, który wciskać próbuję regularnie, gdzie tylko się da. Głównie dlatego, że kod, który tworzę, musi działać jedynie na najnowszej wersji PowerShella. Składnia ta bowiem dodana została w wersji czwartej, więc cokolwiek wymagającego wsparcia dla „trójki” musi obejść się smakiem… To „wirtualne metody” ForEach i Where.

Czytaj dalej ‚Dot Foreach, Dot Where’

Tworzymy moduł: struktura

•22 września, 2020 • Dodaj komentarz

powershell-module-structureWakacje dobiegły końca i pora wrócić do cyklu dotyczącego tworzenia modułu. W poprzedniej części skupiliśmy się na tym, jak korzystając z gita zarządzać kodem wewnątrz naszego modułu. Dziś przyjrzymy się temu, jak dostosować strukturę modułu do pracy z gitem, pomagając nam uniknąć problemów związanych z konfliktami w gicie i jednocześnie jak później zadbać o to, by publikowany moduł był możliwie najprostszy. Zanim jednak przejdziemy do struktury, którą staram się wykorzystywać obecnie, postaram się opisać proces, który nas do niej doprowadził.

Czytaj dalej ‚Tworzymy moduł: struktura’