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 zawieraGet-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 zawieraGet-JobTrigger
polecenie cmdlet . Polecenie, które zawiera symbole wieloznaczne, jest uznawane za odnajdywanie i nie wyzwalaGet-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 zawieraGet-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. )