Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Krótki opis
Objaśnienie sposobu instalowania, importowania i używania modułów programu PowerShell.
Długi opis
PowerShell jest zarówno interfejsem wiersza poleceń, jak i językiem skryptowym. Polecenia w programie PowerShell są implementowane jako skrypty, funkcje lub polecenia cmdlet. Język zawiera słowa kluczowe, które zapewniają strukturę i logikę przetwarzania oraz inne zasoby, takie jak zmienne, dostawcy, aliasy.
Moduł to samodzielna jednostka wielokrotnego użytku, która może obejmować cmdlety, dostawców funkcji, funkcje, zmienne i inne zasoby. Domyślnie program PowerShell automatycznie ładuje zainstalowany moduł przy pierwszym użyciu polecenia z modułu. Zachowanie automatycznego ładowania modułu można skonfigurować przy użyciu zmiennej $PSModuleAutoLoadingPreference. Aby uzyskać więcej informacji, zobacz about_Preference_Variables.
Moduły można również ładować ręcznie lub zwalniać podczas sesji programu PowerShell. Aby załadować lub załadować ponownie moduł, użyj Import-Module. Aby usunąć moduł, użyj polecenia "cmdlet" Remove-Module.
Program PowerShell zawiera podstawowy zestaw modułów. Każdy może tworzyć nowe moduły przy użyciu języka C# lub języka skryptów programu PowerShell. Moduły napisane w języku C# jako skompilowane zestawy platformy .NET są nazywane modułami natywnymi. Moduły napisane w programie PowerShell są nazywane modułami skryptów.
W tym artykule wyjaśniono, jak używać modułów programu PowerShell. Aby uzyskać informacje o sposobie tworzenia modułów programu PowerShell, zobacz Pisanie modułu programu PowerShell.
Notatka
Przed programem PowerShell 3.0 polecenia cmdlet i dostawcy zostali spakowane w przystawkach programu PowerShell. Począwszy od programu PowerShell 3.0, przystawka Microsoft.PowerShell.Core jest domyślnie dodawana do każdej sesji. Jest to jedyna przystawka pozostała w programie PowerShell. Wszystkie inne przystawki zostały przekonwertowane na moduły. Tworzenie nowych przystawek nie jest już obsługiwane.
Domyślne lokalizacje modułów
Program PowerShell przechowuje moduły w następujących lokalizacjach domyślnych:
- W systemie Windows
- Zakres obejmujący wszystkich użytkowników —
$Env:ProgramFiles\PowerShell\Modules - Bieżący zakres użytkownika —
$HOME\Documents\PowerShell\Modules - Moduły dostarczane z programem PowerShell —
$PSHOME\Modules
- Zakres obejmujący wszystkich użytkowników —
- W systemach Linux i macOS
- Zakres obejmujący wszystkich użytkowników —
/usr/local/share/powershell/Modules - Bieżący zakres użytkownika —
$HOME/.local/share/powershell/Modules - Moduły dostarczane z programem PowerShell —
$PSHOME/Modules
- Zakres obejmujący wszystkich użytkowników —
Domyślnie folder Modules dla bieżącego użytkownika nie istnieje. Jeśli moduł został zainstalowany w zakresie CurrentUser przy użyciu Install-Module lub Install-PSResource, te polecenia cmdlet tworzą folder Modules dla bieżącego użytkownika. Jeśli folder nie istnieje, możesz utworzyć go ręcznie.
Użyj następującego polecenia, aby utworzyć folder Modules dla bieżącego użytkownika:
$folder = New-Item -Type Directory -Path $HOME\Documents\PowerShell\Modules
Te lokalizacje są automatycznie uwzględniane w zmiennej środowiskowej $Env:PSModulePath. Aby uzyskać więcej informacji na temat domyślnych lokalizacji modułów, zobacz about_PSModulePath.
Automatyczne ładowanie modułu
Przy pierwszym uruchomieniu polecenia z zainstalowanego modułu program PowerShell automatycznie importuje (ładuje) ten moduł. Moduł musi być przechowywany w lokalizacjach określonych w zmiennej środowiskowej $Env:PSModulePath.
Automatyczne ładowanie modułu umożliwia używanie poleceń w module bez potrzeby konfiguracji lub profilu. Każdy z poniższych przykładów powoduje zaimportowanie modułu CimCmdlets, który zawiera Get-CimInstance, do twojej sesji.
Uruchamianie polecenia
Get-CimInstance Win32_OperatingSystemPobierz polecenie
Get-Command Get-CimInstanceUzyskaj pomoc dotyczącą polecenia
Get-Help Get-CimInstance
Kiedy używasz Get-Command z symbolem wieloznacznym (*), program PowerShell nie importuje żadnych modułów. Symbole wieloznaczne można używać do odnajdywania poleceń bez ładowania modułów, które mogą nie być potrzebne w sesji.
Ręczne importowanie modułu
Ręczne importowanie modułu jest wymagane, gdy moduł nie jest zainstalowany w lokalizacjach określonych przez zmienną środowiskową $Env:PSModulePath lub gdy moduł jest dostarczany jako autonomiczny plik .dll lub .psm1, a nie spakowany moduł.
Ponadto polecenia korzystające z dostawców programu PowerShell nie importują automatycznie modułu. Jeśli na przykład użyjesz polecenia wymagającego dysku WSMan:, takiego jak polecenie cmdlet Get-PSSessionConfiguration, może być konieczne uruchomienie polecenia cmdlet Import-Module w celu zaimportowania modułu Microsoft.WSMan.Management zawierającego dysk WSMan:.
Możesz również zmienić sposób importowania modułu w sesji. Na przykład prefiks parametru Import-Module dodaje unikalny prefiks do rzeczownikowej części poleceń cmdlet zaimportowanych z modułu. Parametr NoClobber uniemożliwia modułowi dodawanie poleceń, które ukrywają lub zastępują istniejące polecenia w sesji. Aby uzyskać więcej informacji, zobacz Zarządzanie konfliktami nazw.
Poniższy przykład importuje moduł BitsTransfer do bieżącej sesji.
Import-Module BitsTransfer
Aby zaimportować moduł, który nie znajduje się w $Env:PSModulePath, użyj w pełni kwalifikowanej ścieżki do folderu modułu. Aby na przykład dodać moduł TestCmdlets w katalogu C:\ps-test do sesji, wpisz:
Import-Module C:\ps-test\TestCmdlets
Aby zaimportować plik modułu, który nie znajduje się w folderze modułu, użyj w pełni kwalifikowanej ścieżki do pliku modułu w poleceniu . Aby na przykład dodać moduł TestCmdlets.dll w katalogu C:\ps-test do sesji, wpisz:
Import-Module C:\ps-test\TestCmdlets.dll
Aby uzyskać więcej informacji na temat dodawania modułów do sesji, zobacz Import-Module.
Importowanie modułu na początku każdej sesji
Polecenie Import-Module importuje moduły do bieżącej sesji programu PowerShell. Aby zaimportować moduł do każdej uruchomionej sesji programu PowerShell, dodaj polecenie Import-Module do profilu programu PowerShell.
Aby uzyskać więcej informacji na temat profilów, zobacz about_Profiles.
Instalowanie opublikowanego modułu
Opublikowany moduł jest modułem dostępnym z zarejestrowanego repozytorium, takiego jak galeria programu PowerShell. Moduły PowerShellGet i Microsoft.PowerShell.PSResourceGet udostępniają polecenia cmdlet do znajdowania, instalowania i publikowania modułów programu PowerShell w zarejestrowanym repozytorium.
Moduł PowerShellGet jest dołączony do programu PowerShell 5.0 i nowszych wersji. Moduł Microsoft.PowerShell.PSResourceGet jest dołączony do wersji programu PowerShell 7.4 i nowszych oraz jest preferowanym menedżerem pakietów dla programu PowerShell.
Microsoft.PowerShell.PSResourceGet można zainstalować obok PowerShellGetw starszych wersjach programu PowerShell. Użyj polecenia cmdlet Install-Module lub Install-PSResource, aby zainstalować moduły z galerii programu PowerShell.
Get-Command Install-Module, Install-PSResource
CommandType Name Version Source
----------- ---- ------- ------
Function Install-Module 2.9.0 PowerShellGet
Cmdlet Install-PSResource 1.0.0 Microsoft.PowerShell.PSResourceGet
Aby uzyskać więcej informacji, zobacz PowerShellGet Overview.
Ręczne instalowanie modułu
Moduł można zainstalować ręcznie, kopiując zawartość modułu z innego folderu. Ten folder może znajdować się w innej lokalizacji na komputerze lokalnym lub zainstalowanym na innym komputerze. Aby ręcznie zainstalować moduł, skopiuj cały folder modułu do nowej lokalizacji określonej w $Env:PSModulePath.
W programie PowerShell użyj polecenia cmdlet Copy-Item. Na przykład uruchom następujące polecenie, aby skopiować folder MyModule z C:\PSTest:
$modulePath = $HOME\Documents\PowerShell\Modules\MyModule
Copy-Item -Path C:\PSTest\MyModule\* -Destination $modulePath -Recurse
Moduł można zainstalować w dowolnej lokalizacji, ale instalowanie modułów w domyślnej lokalizacji modułu ułatwia zarządzanie nimi.
Znajdowanie zainstalowanych modułów
Polecenie cmdlet Get-Module pobiera moduły programu PowerShell załadowane w bieżącej sesji programu PowerShell.
Get-Module
Wymienione moduły mogą zawierać moduły zaimportowane z dowolnej lokalizacji, a nie tylko z $Env:PSModulePath.
Użyj następującego polecenia, aby wyświetlić listę modułów zainstalowanych w $Env:PSModulePath:
Get-Module -ListAvailable
To polecenie pobiera wszystkie moduły zainstalowane w $Env:PSModulePath, a nie tylko moduły zaimportowane do bieżącej sesji. To polecenie nie wyświetla listy modułów zainstalowanych w innych lokalizacjach.
Aby uzyskać więcej informacji, zobacz Get-Module.
Wyświetlanie listy poleceń w module
Użyj polecenia cmdlet Get-Command, aby znaleźć wszystkie dostępne polecenia. Możesz użyć parametrów polecenia cmdlet Get-Command do filtrowania poleceń na przykład według modułu, nazwy i rzeczownika.
Aby znaleźć wszystkie polecenia w module, wpisz:
Get-Command -Module <module-name>
Aby na przykład znaleźć polecenia w module BitsTransfer, wpisz:
Get-Command -Module BitsTransfer
Aby uzyskać więcej informacji na temat polecenia cmdlet Get-Command, zobacz Get-Command.
Usuwanie modułu
Po usunięciu modułu polecenia dodane przez moduł zostaną usunięte z sesji. Na przykład następujące polecenie usuwa moduł BitsTransfer z bieżącej sesji.
Remove-Module BitsTransfer
Usunięcie modułu odwraca operację importowania modułu. Usunięcie modułu nie powoduje odinstalowania modułu. Aby uzyskać więcej informacji, zobacz Remove-Module.
Polecenia można dodawać do sesji z modułów i przystawek. Moduły mogą dodawać wszystkie typy poleceń, w tym poleceń cmdlet, dostawców i funkcji oraz elementów, takich jak zmienne, aliasy i dyski programu PowerShell. Przystawki mogą dodawać tylko cmdlety i dostawców.
Przed usunięciem modułu z sesji użyj następujących poleceń, aby określić moduł, który chcesz usunąć.
Na przykład użyj następującego polecenia, aby znaleźć źródło poleceń cmdlet Get-Date i Get-Help:
Get-Command Get-Date, Get-Help -All |
Select-Object -Property Name, CommandType, Module ,PSSnapIn
Poniższe dane wyjściowe pokazują, że cmdlet Get-Help znajduje się w przystawce Microsoft.PowerShell.Core. Nie można usunąć tej przystawki z sesji.
Name CommandType Module PSSnapIn
---- ----------- ------ --------
Get-Date Function
Get-Date Cmdlet Microsoft.PowerShell.Utility
Get-Help Cmdlet Microsoft.PowerShell.Core
Istnieją dwa źródła dla Get-Date. Jedna z nich jest funkcją, a druga to polecenie cmdlet w module Microsoft.PowerShell.Utility. Moduł można usunąć przy użyciu Remove-Module. Aby usunąć funkcję, możesz usunąć ją z dysku Function:.
Remove-Item Function:Get-Date
Aby uzyskać więcej informacji na temat dysku Function:, zobacz about_Function_Provider.
Zarządzanie konfliktami nazw
Konflikty nazw występują, gdy więcej niż jedno polecenie w sesji ma taką samą nazwę. Importowanie modułu powoduje konflikt nazw, gdy polecenia w module mają takie same nazwy jak polecenia lub elementy w sesji.
Import-Module może dodawać polecenia, które ukrywają i zastępują polecenia w bieżącej sesji. Konflikty nazw mogą spowodować ukrycie lub zastąpienie poleceń. Zastąpienie polecenia występuje, gdy zaimportowany moduł zawiera polecenie o takiej samej nazwie jak istniejące polecenie w sesji. Nowo zaimportowane polecenie ma pierwszeństwo przed istniejącym poleceniem.
Na przykład gdy sesja zawiera funkcję i polecenie cmdlet o tej samej nazwie, program PowerShell domyślnie uruchamia funkcję. Gdy sesja zawiera polecenia tego samego typu o tej samej nazwie, takie jak dwa polecenia cmdlet o tej samej nazwie, domyślnie uruchamia ostatnio dodane polecenie.
Aby uzyskać więcej informacji, w tym wyjaśnienie reguł pierwszeństwa i instrukcje dotyczące uruchamiania ukrytych poleceń, zobacz about_Command_Precedence.
Możesz uruchomić ukryte lub zastąpione polecenie, kwalifikując nazwę polecenia. Aby zakwalifikować nazwę polecenia, dodaj nazwę modułu, który zawiera wersję żądanego polecenia. Na przykład:
Microsoft.PowerShell.Utility\Get-Date
Uruchamianie Get-Date z prefiksem nazwy modułu zapewnia, że uruchamiana jest wersja z modułu Microsoft.PowerShell.Utility.
Aby wykryć konflikty nazw, użyj parametru All cmdletu Get-Command. Domyślnie Get-Command pobiera tylko te polecenia, które są uruchamiane podczas wpisywania nazwy polecenia. Parametr All pobiera wszystkie polecenia o określonej nazwie w sesji.
Aby zapobiec konfliktom nazw, użyj parametrów NoClobber lub Prefix polecenia cmdlet Import-Module.
Prefiks parametr dodaje prefiks do nazw importowanych poleceń, aby były one unikatowe w sesji. Parametr NoClobber nie importuje żadnych poleceń, które mogłyby ukryć lub zamienić istniejące polecenia w sesji.
Możesz również użyć aliasu , cmdletu , funkcji oraz parametrów zmiennej Import-Module, aby wybrać tylko polecenia, które chcesz zaimportować, oraz wykluczyć polecenia powodujące konflikty nazw w sesji.
Autorzy modułów mogą zapobiegać konfliktom nazw przy użyciu właściwości DefaultCommandPrefix manifestu modułu w celu dodania domyślnego prefiksu do wszystkich nazw poleceń.
Wartość parametru prefiksu