Powershell: Ładowanie modułu z bieżącego katalogu

16-lut-2016

Masz skrypt. Skrypt używa modułu. Podczas instalacji skryptu plik skryptu i moduł zostaną umieszczone w tym samym katalogu. Jak to zrobić, żeby w początkowych linijkach skryptu zidentyfikować w jakim jesteśmy katalogu i załadować z niego moduł?

Proste

import-module .\MyModule.psm1

Nie zadziała, bo .\ oznacza katalog bieżący, który nie musi być zgodny z katalogiem, w którym znajduje się skrypt. Z pomocą przychodzi jednak zmienna $MyInvocation:

$scriptDir = Split-path $MyInvocation.InvocationName -Parent
$modulePath = Join-Path $scriptDir 'MyModule.psm1' 


Import-Module $modulePath

Pierwsza linijka pozwala pobiera ścieżkę do skryptu i wycina z niej tylko katalog.

Druga linijka łaczy nazwę tego katalogu z nazwą modułu

Trzecia linijka ładuje ten moduł.

Komentarze:

  1. Szkolenie Powershell dla administratorów Windows. Informacja dla studentów | Kursy OnlineKursy Online napisał,

    […] Jeśli piszesz już własne funkcje i zbierasz je w pliku modułu, albo może chcesz aby Twój skrypt skorzystał z zasobów umieszczonych w tym samym katalogu (np. plików CVS, XML itp.) to przyda się wiedzieć, jak odnaleźć ścieżkę do katalogu, w którym znajduje się Twój skrypt. Wcale nie jest to trudne – wystarczy skorzystać z $MyInvocation. Szczegóły: http://www.mobilo24.eu/powershell-ladowanie-modulu-z-biezacego-katalogu/ […]

Autor: Rafał Kraik