PowerShell od wersji szóstej ma dwie cechy, których nie posiadał nigdy przedtem: działa na różnych systemach i jest projektem o otwartym kodzie. I o ile ta pierwsza cecha nie sprawiła, by nagle pojawiły się dystrybucje Linuxa z PowerShellem jako podstawową powłoką systemową (jeszcze?
), o tyle otwarty kod naprawdę działa, o czym przekonałem się ostatnio, gdy zachciało mi się podłubać nieco przy schematach plików JSON.
Otwarty kod naprawdę działa!
•1 lutego, 2023 • Dodaj komentarzPowerShell podpowiada komendy gita
•9 września, 2022 • Dodaj komentarzObiecywałem, że spróbuję i spróbowałem. I choć tak jak sądziłem, bez kompilowania się nie obyło, to samo tworzenia prościutkiego modułu, który zacznie podpowiadać polecenia okazało się stosunkowo proste. Na pierwszy rzut – prosty modulik, który podpowiada polecenia gita. Nie poprzestaniemy jednak jedynie na tym – pozwolimy pomocy pomagać nam „bardziej”.
PowerShell w myślach czyta?
•13 lipca, 2022 • Dodaj komentarzO 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”.
Moduł ISEPester – testujemy w PowerShell ISE
•12 lipca, 2022 • Dodaj komentarzO 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.
Komenda poszukiwana
•2 lipca, 2022 • Dodaj komentarzPowerShell 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.
Tabulator kontra klasa
•26 Maj, 2022 • Dodaj komentarzO 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ć”.
Magia splattingu
•10 kwietnia, 2022 • Dodaj komentarzJedną 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.
Błędy w REST – zamieść pod dywan
•30 marca, 2022 • Dodaj komentarzW 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).
Gdy praca z REST bokiem wychodzi…
•27 marca, 2022 • Dodaj komentarzPraca 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”.