PowerShell w myślach czyta?

•13 lipca, 2022 • Dodaj komentarz

PowerShell-Czyta-W-MyslachO module PSReadLine pisałem już na tym blogu w przeszłości. Gwoli przypomnienia: to właśnie ten moduł jest odpowiedzialny za skróty klawiszowe, kolorowanie składni, przechowywanie historii (i udostępnienia jej za pomocą skrótu klawiszowego CTRL+R) i wiele, wiele innych. Od ostatniej wersji domyślnie włączona jest też funkcja, która sprawia, że PowerShell zaczyna przewidywać wasze myśli a w jednym przypadku – podsuwać gotowe rozwiązania. Mowa o dostępnej od wersji 2.1 (a od wersji 2.2.6 domyślnie włączonej) opcji “PredictionSource”.

Czytaj dalej ‚PowerShell w myślach czyta?’

Moduł ISEPester – testujemy w PowerShell ISE

•12 lipca, 2022 • Dodaj komentarz

PesterO testach w PowerShellu pisałem już na tym blogu kilka razy. Dziś skupię się nie na samych testach, ich tworzeniu i zastosowaniach, ale na module, który “popełniłem” inspirowany sesją przygotowaną niemal dwa lata temu przez Jakuba Jareša, człowieka w znacznej mierze odpowiedzialnego za moduł Pester. W sesji tej Jakub demonstrował jak w VS Code uruchamiać pojedynczy test, czy blok Context/ Describe. Po ustaleniu, że wtyczka do VS Code korzysta po prostu z odpowiedniego rodzaju filtrów w trakcie uruchamiania testów, nie pozostało mi nic innego, jak tylko przenieść te możliwości do mojego ulubionego edytora, PowerShell ISE.

Czytaj dalej ‚Moduł ISEPester – testujemy w PowerShell ISE’

Komenda poszukiwana

•2 lipca, 2022 • Dodaj komentarz

AbstractSyntaxTreePowerShell od wersji trzeciej oferuje stosunkowo łatwy dostęp do Abstract Syntax Tree (AST – drzewo składniowe, bądź drzewo składni abstrakcyjnej) samego języka. Dzięki temu narzędzia, ale również użytkownicy mogą przeprowadzać analizę składni, odnajdując jej elementy nie za pomocą wyrażeń regularnych (które czasem mogą wprowadzić nas w błąd) a za pomocą analizy zbliżonej do tej, jaką przeprowadzi sam silnik. Umożliwia to odnajdowanie elementów składni wszędzie tam, gdzie one wystąpią, bez ryzyka, że coś pominiemy (lub w naszych wynikach pojawią się wystąpienia nieprawidłowe). Przykład problemu, który AST pozwoli rozwiązać, miałem ostatnio w pracy.

Czytaj dalej ‚Komenda poszukiwana’

Tabulator kontra klasa

•26 Maj, 2022 • Dodaj komentarz

TabKlasyO potędze tabulacji w PowerShellu pisałem na tym blogu kilkakrotnie. Dziś chciałem wspomnieć o możliwości, którą przyjąłem uważać za oczywistą, a która oczywista chyba wcale nie jest – do tego stopnia, że kolega z pracy (nota bene w znacznej mierze równie biegły w PowerShellu co ja) do niedawna o możliwości tej nie wiedział. Będzie też nieco o pracy z klasami/ obiektami nieco ogólniej. Przede wszystkim o tworzeniu obiektów w oparciu o klasy czy to “wbudowane” w .NET, czy to dystrybuowane wraz z modułami w PowerShellu. Wszystko to na przykładzie pracy z AWS, przy którym ostatnio zdarza mi się nieco częściej “dłubać”.

Czytaj dalej ‚Tabulator kontra klasa’

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’