Importowanie modułu programu PowerShell

Po zainstalowaniu modułu w systemie prawdopodobnie będziesz chcieć go zaimportować. Importowanie to proces ładowania modułu do aktywnej pamięci, dzięki czemu użytkownik może uzyskać dostęp do tego modułu w sesji programu PowerShell. W programie PowerShell 2.0 można zaimportować nowo zainstalowany moduł programu PowerShell z wywołaniem polecenia cmdlet Import-Module. W programie PowerShell 3.0 program PowerShell może niejawnie zaimportować moduł, gdy jedna z funkcji lub poleceń cmdlet w module jest wywoływana przez użytkownika. Należy pamiętać, że obie wersje zakładają, że moduł jest instalowany w lokalizacji, w której program PowerShell może go znaleźć. Aby uzyskać więcej informacji, zobacz Instalowanie modułu programu PowerShell. Manifest modułu umożliwia ograniczenie eksportowanych części modułu oraz użycie parametrów wywołania w celu ograniczenia Import-Module importowanych części.

Importowanie Snap-In (PowerShell 1.0)

Moduły nie istniały w programie PowerShell 1.0: zamiast tego trzeba było zarejestrować przystawki i korzystać z nich. Nie zaleca się jednak używania tej technologii w tym momencie, ponieważ moduły są zwykle łatwiejsze do zainstalowania i zaimportowania. Aby uzyskać więcej informacji, zobacz How to Create a Windows PowerShell Snap-in.

Importowanie modułu za pomocą Import-Module (PowerShell 2.0)

Program PowerShell 2.0 używa odpowiednio nazwanego polecenia cmdlet Import-Module do importowania modułów. Po uruchomieniu tego polecenia cmdlet program Windows PowerShell wyszuka określony moduł w katalogach określonych w PSModulePath zmiennej . Po wyszukaniu określonego katalogu program Windows PowerShell pliki w następującej kolejności: pliki manifestu modułu (psd1), pliki modułu skryptu (psm1), pliki modułów binarnych (.dll). Aby uzyskać więcej informacji na temat dodawania katalogów do wyszukiwania, zobacz about_PSModulePath. Poniższy kod opisuje sposób importowania modułu:

Import-Module myModule

Przy założeniu, że myModule znajduje się w programie , program PSModulePath PowerShell załaduje myModule do aktywnej pamięci. Jeśli myModule nie znajduje się w ścieżce, nadal możesz jawnie poinformować program PSModulePath PowerShell, gdzie go znaleźć:

Import-Module -Name C:\myRandomDirectory\myModule -Verbose

Możesz również użyć parametru , aby określić, co jest eksportowane z modułu i co -Verbose jest importowane do aktywnej pamięci. Zarówno eksporty, jak i importy ograniczają to, co jest widoczne dla użytkownika: różnica polega na tym, kto kontroluje widoczność. Zasadniczo eksporty są kontrolowane przez kod w module. Z kolei importy są kontrolowane przez Import-Module wywołanie . Aby uzyskać więcej informacji, zobacz Ograniczanie elementów członkowskich importowanych poniżej.

Niejawne importowanie modułu (PowerShell 3.0)

Począwszy od Windows PowerShell 3.0 moduły są importowane automatycznie, gdy w poleceniu jest używane dowolne polecenie cmdlet lub funkcja w module. Ta funkcja działa w każdym module w katalogu, który znajduje się w wartości zmiennej środowiskowej PSModulePath. Jeśli jednak nie zapiszemy modułu w prawidłowej ścieżce, nadal będzie można je załadować przy użyciu jawnej opcji Import-Module opisanej powyżej.

Następujące akcje wyzwalają automatyczne importowanie modułu, nazywanego również "automatycznym ładowaniem modułu".

  • Za pomocą polecenia cmdlet w poleceniu. Na przykład wpisanie Get-ExecutionPolicy polecenia importuje moduł Microsoft.PowerShell.Security, który zawiera Get-ExecutionPolicy polecenie cmdlet .

  • Aby pobrać polecenie, należy użyć polecenia cmdlet Get-Command. Na przykład wpisanie Get-Command Get-JobTrigger polecenia importuje moduł PSScheduledJob, który zawiera Get-JobTrigger polecenie cmdlet . Polecenie, które zawiera symbole wieloznaczne, jest uznawane za odnajdywanie i nie wyzwala Get-Command importowania modułu.

  • Uzyskiwanie pomocy dotyczącej polecenia cmdlet za pomocą polecenia cmdlet Get-Help. Na przykład wpisanie polecenia Get-Help Get-WinEvent importuje moduł Microsoft.PowerShell.Diagnostics, który zawiera Get-WinEvent polecenie cmdlet .

Aby obsługiwać automatyczne importowanie modułów, polecenie cmdlet pobiera wszystkie polecenia cmdlet i funkcje we wszystkich zainstalowanych modułach, nawet jeśli moduł nie został Get-Command zaimportowany do sesji. Aby uzyskać więcej informacji, zobacz temat pomocy polecenia cmdlet Get-Command.

Proces importowania

Podczas importowania modułu jest tworzony nowy stan sesji dla modułu, a obiekt System.Management.Automation.PSModuleInfo jest tworzony w pamięci. Stan sesji jest tworzony dla każdego importowanego modułu (obejmuje to moduł główny i wszystkie moduły zagnieżdżone). Elementy członkowskie wyeksportowane z modułu głównego, w tym wszystkie elementy członkowskie wyeksportowane do modułu głównego przez jakiekolwiek zagnieżdżone moduły, są następnie importowane do stanu sesji wywołującego.

Metadane elementów członkowskich, które są eksportowane z modułu, mają właściwość ModuleName. Ta właściwość jest wypełniana nazwą modułu, który je wyeksportował.

Ostrzeżenie

Jeśli nazwa wyeksportowanego członka używa niezatwierdzonych czasowników lub jeśli nazwa tego członka używa znaków z ograniczeniami, po uruchomieniu polecenia cmdlet Import-Module zostanie wyświetlone ostrzeżenie.

Domyślnie polecenie cmdlet Import-Module nie zwraca żadnych obiektów do potoku. Jednak polecenie cmdlet obsługuje parametr PassThru, który może służyć do zwracania obiektu System.Management.Automation.PSModuleInfo dla każdego importowanego modułu. Aby wysłać dane wyjściowe do hosta, użytkownicy powinni uruchomić polecenie cmdlet Write-Host.

Ograniczanie importowanych elementów członkowskich

Gdy moduł jest importowany przy użyciu polecenia cmdlet Import-Module, domyślnie wszystkie wyeksportowane elementy członkowskie modułu są importowane do sesji, w tym wszystkie polecenia wyeksportowane do modułu przez moduł zagnieżdżony. Domyślnie zmienne i aliasy nie są eksportowane. Aby ograniczyć eksportowane elementy członkowskie, użyj manifestu modułu. Aby ograniczyć importowane elementy członkowskie, użyj następujących parametrów Import-Module polecenia cmdlet .

  • Funkcja: ten parametr ogranicza eksportowane funkcje. (Jeśli używasz manifestu modułu, zobacz klucz FunctionsToExport).

  • `Polecenie cmdlet: ten parametr ogranicza eksportowane polecenia cmdlet (jeśli używasz manifestu modułu, zobacz klucz CmdletsToExport).

  • Zmienna: ten parametr ogranicza eksportowane zmienne (jeśli używasz manifestu modułu, zobacz klucz VariablesToExport).

  • Alias: ten parametr ogranicza aliasy, które są eksportowane (jeśli używasz manifestu modułu, zobacz aliasyToExport klucza. )

Zobacz też

Pisanie modułu programu Windows PowerShell