Dziś krótki wpis o dwóch zmiennych, którym nie poświęciłem zbyt wiele uwagi gdy usłyszałem o nich po raz pierwszy. Wówczas nie widziałem dla nich kompletnie żadnego zastosowania. Dziś nie mam już wątpliwości: ich przydatność jest tylko kwestią wyobraźni użytkownika i choć w zasadzie ogranicza się ona do interaktywnej konsoli, to będąc jej stałym użyszkodnikiem – nie wyobrażam sobie jak mogłem kiedyś sobie bez tych dwóch zmiennych radzić. Zmienne mają bardzo krótkie nazwy, dzięki czemu korzystanie z nich nie wymaga wielu znaków: wystarczy standardowy znak dolara (oznaczającego zmienną) i jednoznakowa nazwa: dolar lub "daszek".
Dolar-daszek, dolar-dolar
•15 lutego, 2017 • Dodaj komentarzHistoria… inaczej.
•8 lutego, 2017 • Dodaj komentarz
Od jakiegoś czasu noszę się z zamiarem napisania o grupie modułów, których autorem jest Kirk Munro – jeden z niewielu ludzi, którzy tytuł PowerShell MVP noszą tak długo, że trudno oprzeć się wrażeniu, że z tytułem tym się urodzili. Kirk to dynamit, człowiek pełen pomysłów a gdy zaczyna pomysły te wprowadzać w życie… Dziś o module, który zmienia zasadniczo sposób pracy z historią poleceń.
Moduł HistoryPx przeznaczony jest dla wszystkich wersji PowerShella, począwszy od wersji trzeciej. Zmienia on w sposób zasadniczy to, jak zachowuje się nasza konsola i pozwala nam cofać się do przeszłości. Zanim jednak przyjrzymy się temu jak świat wygląda po zainstalowaniu i zaimportowaniu tego modułu, pomówmy sobie chwilę o tych wszystkich sytuacjach, gdy czegoś w PowerShellu nam brakowało…
TabExpansion Plus Plus – rewizyta
•31 października, 2016 • Dodaj komentarzMinęły przeszło dwa lata od posta, w którym starałem się Wam przybliżyć moduł TabExpansion++. W tak zwanym międzyczasie autor projektu, Jason Shirk, wrócił "do domu" i pracuje ponownie w zespole odpowiedzialnym za PowerShella. Wraz z nim do "rdzenia" powróciły oba jego projekty, o których pisałem na moim blogu: TabExpansion++ oraz PSReadline. O ile jednak PSReadline (pomijając znaczącą rozbudowę i dodanie kolejnych możliwości, oraz zmianę przestrzeni nazw, w której znajdziemy wszelkie metody z modułem związane) nie zmienił się znacznie, o tyle zmian w TabExpansion++ nie brakuje.
Przedsprzedaż spełnionych marzeń
•27 czerwca, 2016 • 10 Komentarzy
Gdy przeszło pięć lat temu napisałem pierwszy artykuł na tym blogu, wspomniałem o kilku celach, które pragnąłem osiągnąć. Cele to chyba jednak zbyt mocne słowo. Bardziej marzenia…
Pierwsze z nich, polonizacja PowerShella, nigdy nie doszła do skutku. Choć przyznam, że pokusa by do tego zagadnienia wrócić teraz jest większa niż kiedykolwiek wcześniej: pomoc jest dostępna na GitHubie, więc środki po temu, by przetłumaczyć pomoc na język ojczysty w zasadzie są dostępne. Cóż jednak z tego, skoro czasu zwyczajnie brakuje, by choć zacząć.
Z innej beczki: aliasy.
•31 Maj, 2016 • Dodaj komentarzPlanowałem już od dłuższego czasu skrobnąć kolejną część cyklu o modułach innych niż skryptowe, ale maj przemknął mi przed oczami: najpierw majowe wakacje dzieciaków połączone z podróżą do Ziemi Ojczystej i zwieńczone komunią chrześniaka, dalej drugie urodziny najmłodszej i komunia najstarszej córci i nim zerknąłem w kalendarz – przyszło powoli żegnać się z tym pięknym miesiącem. Pogoda również nie nastrajała „komputerowo”, choć biorąc pod uwagę fakt, że na pisanie czas zwykle znajduję i tak w nocy…
Zamiast więc kolejnej części cyklu słów kilka o tym, na co natknąłem się w zasadzie niedawno, a co może Wam się przydać w trakcie pisania zarówno kompilowanych, jak i skryptowych poleceń.
Piszemy sobie moduł: C# (2)
•24 kwietnia, 2016 • Dodaj komentarz
Coś nie specjalnie (póki co) udaje mi się dotrzymać obietnicy – pisuję nadal rzadko. Cóż jednak zrobić, gdy doba nie chce się wydłużyć, a ilość rzeczy do zrobienia piętrzy się nieustannie. Dziś jednak w końcu mam chwilkę czasu, wypada więc zamknąć to, co zaczęliśmy jakiś czas temu.
W pierwszej części napisaliśmy banalnie prosty moduł. Przyjrzeliśmy się temu, jak utworzyć odpowiedni projekt, pobrać niezbędne biblioteki i wreszcie – jak przyjrzeć się naszemu modułowi w debuggerze. Dziś przyjrzymy się temu, jak wokół modułu binarnego zbudować pełny moduł: z manifestem, plikami pomocy, formatów i typów.
Piszemy sobie moduł: C# (1)
•16 marca, 2016 • Dodaj komentarz
Pisanie modułów skryptowych w PowerShellu to rzecz trywialna dla każdego, komu zdarzyło się w PowerShellu "popełnić" kilka skryptów. W ostateczności moduł taki możemy utworzyć wrzucając kilka funkcji do pliku z rozszerzeniem psm1. Jeśli mamy skrypty stanowiące swoiste biblioteki funkcji może wręcz wystarczyć zmiana nazwy pliku. Wreszcie – importować w ten sposób można również pliki z rozszerzeniem ps1, nic nie stoi więc na przeszkodzie by zwyczajny skrypt zacząć traktować jako moduł skryptowy. Dlatego właśnie postanowiłem przyjrzeć się dwóm pozostałym opcjom. Na pierwszy ogień idzie moduł binarny. A ponieważ z języków, w jakich można moduł taki napisać, najbliższy memu sercu jest C# – z niego właśnie w trakcie pisania modułu skorzystam.
Wspieramy stronicowanie
•31 stycznia, 2016 • Dodaj komentarz
Tworząc polecenia w PowerShellu mamy całą gamę możliwości, dzięki którym nasz skrypt/ funkcja może łudząco przypominać skompilowany cmdlet. Jedną z takich możliwości jest "oflagowanie" polecenia jako wspierającego stronicowanie (SupportsPaging). Oznacza to, że nasze polecenie zyska parametry zbliżone do tych, które oferuje Select-Object. Od dłuższego czasu nosiłem się z zamiarem dania szansy tej funkcjonalności. O tym jak długi był to czasy niech zaświadczy fakt, że możliwość tą dodano w wersji trzeciej PowerShella. I przyznam, że mimo wszystko troszkę mnie opcja ta rozczarowała. Na ile udało mi się zbadać jej możliwości, ręczne dodanie dwóch parametrów, na których mogłoby mi zależeć, może się okazać rozwiązaniem lepszym. Ale najpierw o tym co i jak, czyli gdzie (przynajmniej teoretycznie) opcja ta może nam się przydać.
Plik, czyli zmienna.
•17 stycznia, 2016 • 1 komentarz
Zmienne w PowerShellu to dość ciekawy "zwierz". Większość użytkowników spotyka się z nimi w najprostszej postaci: $zmienna. Definiujemy, modyfikujemy, używamy. I tyle. Trzeba jednak wiedzieć, że zmienne to coś więcej niż tylko "worki" na nasze obiekty, do których odnosimy się wykorzystując tę najprostszą notację. W tym artykule postaram się wspomnieć o kilku sprawach związanych ze zmiennymi, które odróżniają zmienne w PowerShellu od zmiennych wykorzystywanych w innych językach programistycznych i skryptowych. Zanim jednak o tym, przyjrzymy się nieco dokładniej temu czym jest a czym nie jest w PowerShellu nazwa zmiennej.
Noworoczne postanowienia (reaktywacja)
•31 grudnia, 2015 • 3 KomentarzeZ przerażeniem spoglądam dziś na statystyki bloga z ostatniego roku. Jeden post, w dodatku na samym jego początku… Nie taki był plan! Ostatnio zastanawiałem się nad przyczyną tego stanu rzeczy i doszedłem do wniosku, że przyczyna jest jedna: zawsze mierzę w artykuły długie i wyczerpujące temat, często dość obszerny. A przecież wiedza to nie tylko te tomiszcza, bloki wiedzy, ale również drobne wskazówki, ciekawostki i informacje, które zamknąć można w kilku zdaniach. Moje postanowienie noworoczne ich właśnie będzie dotyczyć. Planuję wrzucać coś o wiele częściej, ale w mniejszych porcjach. Wam będzie łatwiej to czytać, mi łatwiej pisać w miarę regularnie i jednocześnie jak sądzę może nawet ciekawiej.


