Home > Powershell > [PL] Ładowanie skrtyptu Powershella jako modułu

[PL] Ładowanie skrtyptu Powershella jako modułu

powershellCzęsto mamy zbiór skryptów zawierających jakąś ciekawą funkcjonalność, którą wykorzystujemy na co dzień. Zamiast ładować je za każdym odpaleniem muszli lub dodawać do profilu daną funkcję warto utworzyć własny moduł. Taki moduł najprościej utworzyć za pomocą najprostszych narzędzi, które oferuje nam powershell, które nie wymagają dodatkowych zależności.

Wyzwanie

Mam repozytorium kodu, w którym rozwijam różnego rodzaju aplikacje i programy, a w nim także skrypty. Są to skrypty specyficzne dla projektu, używane każdego dnia, czy tylko po prostu jakieś zabawki. Skrypty utrzymuje jako zwykłe .ps1, ponieważ są one gdzieś fragmentem większej części. Niektóre skrypty wykorzystuje na co dzień i chcę je mieć dostępne zaraz po otwarciu PowerShella. Po każdej modyfikacji, nie chcę ręcznie kopiować nowej wersji w określone miejsce na dysku i nie chcę łączyć je z plikiem profilu.

Pomysł

Utworzyć narzędzie, pozwalające na zarządzanie procesem dodawania i aktualizowania własnych skryptowych modułów, w taki sposób aby nie było to zbyt skomplikowane i można było w prosty sposób aktualizować dany moduł.

Rozwiązanie

Jestem w katalogu zarządzanym przez gita, w którym przechowuje moje skrypty. Chcę, aby były one dostępne przy kolejnym odpaleniu konsoli. Nic więc prostszego.

Import-AsModule .\MojSkrypt.ps1

Skrypt ten został zaimportowany jako moduł o nazwie MojSkrypt. Nazwa modułu bierze się z nazwy skryptu.

Jeżeli coś zmieniłem w tym skrypcie na repozytorium, lub kolega obok pushnął nową wersję, to muszę uaktualnić moją wersję modułu. Uruchomienie tej samej komendy co wyżej zwróci tylko błąd informujący, że moduł o takiej samej nazwie już istnieje. Jeżeli chcę uaktualnić moduł, to muszę wymusić zaimportowanie zaimportowanie skryptu:

Import-AsModule .\MojSkrypt.ps1 -Force

Również mogę zaimportować skrypt pod inną nazwą lub do innego folderu z modułami – szczegóły znajdują się w manualu.

Wykorzystanie

Aby zainstalować ten skrypt jako moduł musimy najpierw go załadować do pamięci:

PS> . .\ImportAsModule.ps1

Następnie instalujemy ten skrypt jako moduł wykorzystując funkcję, załadowaną już w pamięci

PS> Import-AsModule .\ImportAsModule.ps1

Kolejny przykład, to zainstalowanie GoToLocation – odpowiedzialnego za tworzenie zakładek dla lokalizacji.

PS> Import-AsModule .\Go-ToLocation.ps1

Download

Aktualna wersja znajduje się na githubie.
https://github.com/D3M80L/SharpProject/tree/master/Powershell/ImportAsModule

Są jednak lepsze skrypty. W czasie pisania skryptu oraz krótkiego rozpoznania czy jest dostępny inny skrypt z podobną, lepszą lub tą samą funkcjonalnością, znalazłem dosyć interesujący i bardziej, bijący na łeb i szyję skrypt Joela Bennetta. Skrypt można znaleźć na poshcode.

Tags:
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: