Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
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 to język skryptowy i powłoka poleceń. Język składa się ze słów kluczowych, które zapewniają strukturę i logikę przetwarzania oraz poleceń, które wykonują pracę. Polecenia w programie PowerShell są implementowane jako skrypty, funkcje lub polecenia cmdlet.
Moduł to samodzielna jednostka wielokrotnego użytku, która może zawierać polecenia cmdlet, dostawców, funkcje, zmienne i inne typy zasobów, które można zaimportować jako pojedynczą jednostkę.
Program PowerShell jest dostarczany z podstawowym zestawem modułów. W razie potrzeby można również zainstalować więcej modułów. Domyślnie zainstalowane moduły są ładowane automatycznie przy pierwszym użyciu polecenia z modułu.
$PSModuleAutoloadingPreference Zmienna służy do włączania, wyłączania i konfigurowania automatycznego ładowania modułów. Aby uzyskać więcej informacji, zobacz about_Preference_Variables.
Możesz rozładować lub ponownie załadować urządzenie podczas sesji. Użyj polecenia cmdlet, Remove-Module aby zwolnić moduł z sesji. Użyj polecenia cmdlet, Import-Module aby załadować moduł.
Moduły można tworzyć jako skompilowane zestawy .NET napisane w języku C# lub moduły oparte na skryptach napisane w programie PowerShell. W tym temacie wyjaśniono, jak używać modułów programu PowerShell. Aby uzyskać informacje na temat pisania modułów programu PowerShell, zobacz Pisanie modułu programu PowerShell.
Uwaga / 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.
Instalowanie opublikowanego modułu
Opublikowany moduł to moduł, który jest dostępny w zarejestrowanym repozytorium, takim 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 programu PowerShell 7.4 i nowszych wersji.
Microsoft.PowerShell.PSResourceGet to nowy preferowany menedżer pakietów dla programu PowerShell i można go zainstalować w poprzednich 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
Jeśli otrzymasz moduł jako folder z zawartymi w nim plikami, musisz zainstalować go na swoim komputerze, zanim będzie można go używać w programie PowerShell.
Program PowerShell jest dostarczany z kilkoma wstępnie zainstalowanymi modułami. Na komputerach z systemem Windows wiele funkcji systemu Windows zawiera moduły do zarządzania tą funkcją. Te moduły są instalowane po zainstalowaniu funkcji. Inne moduły mogą być dostarczane z instalatorem lub programem instalacyjnym, który instaluje moduł.
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
Skopiuj cały folder modułu do nowo utworzonego folderu. W programie PowerShell użyj polecenia cmdlet Copy-Item. Na przykład uruchom następujące polecenie, aby skopiować MyModule folder z C:\PSTest folderu, który właśnie utworzyłeś:
Copy-Item -Path C:\PSTest\MyModule -Destination $folder
Moduł można zainstalować w dowolnej lokalizacji, ale instalowanie modułów w domyślnej lokalizacji modułu ułatwia zarządzanie nimi. 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. Moduły w innych lokalizacjach należy zaimportować za pomocą Import-Module polecenia cmdlet.
Automatyczne ładowanie modułu umożliwia używanie poleceń w module bez potrzeby konfiguracji lub profilu. Nie ma potrzeby zarządzania modułami po zainstalowaniu ich na komputerze.
Każdy z poniższych przykładów powoduje, że moduł CimCmdlets , który zawiera Get-CimInstance, zostanie zaimportowany do sesji.
Uruchamianie polecenia
Get-CimInstance Win32_OperatingSystemPobierz polecenie
Get-Command Get-CimInstanceUzyskaj pomoc dotyczącą polecenia
Get-Help Get-CimInstance
Możesz użyć Get-Command polecenia cmdlet z listą poleceń we wszystkich zainstalowanych modułach, nawet jeśli nie są one jeszcze w sesji. Kiedy używasz Get-Command z symbolem wieloznacznym (*), program PowerShell nie importuje żadnych modułów. Symboli wieloznacznych można używać do odnajdywania poleceń bez ładowania modułów, które mogą nie być potrzebne w sesji.
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:.
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ł.
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.
Możesz zaimportować moduł, który jest zainstalowany w Twoim, $env:PSModulePath określając nazwę modułu. Na przykład następujące polecenie 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.
Znajdowanie zainstalowanych modułów
Polecenie Get-Module cmdlet pobiera moduły programu PowerShell, które zostały zaimportowane w sesji.
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 replace 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żna uruchomić polecenie, które zostało ukryte lub zastąpione, kwalifikując nazwę polecenia. Aby zakwalifikować nazwę polecenia, dodaj nazwę modułu, który zawiera wersję polecenia, którą chcesz. 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