Import modulu PowerShellu
Po instalaci modulu do systému budete pravděpodobně chtít modul importovat. Import je proces, který modul načte do aktivní paměti, aby k ho uživatel mohl přistupovat ve své relaci PowerShellu. V PowerShellu 2.0 můžete importovat nově nainstalovaný modul PowerShellu s voláním rutiny Import-Module. V PowerShellu 3.0 může PowerShell implicitně importovat modul, když uživatel volá některou z funkcí nebo rutin v modulu. Všimněte si, že obě verze předpokládají, že modul nainstalujete do umístění, kde ho PowerShell dokáže najít; Další informace najdete v tématu Instalace modulu PowerShell. Manifest modulu můžete použít k omezení částí modulu, které se exportují, a pomocí parametrů volání Import-Module
omezit importované části.
Import Snap-In (PowerShell 1.0)
Moduly v PowerShellu 1.0 neexistovaly: místo toho jste museli registrovat a používat moduly snap-in. V tomto okamžiku se ale nedoporučuje používat tuto technologii, protože moduly jsou obecně snazší instalovat a importovat. Další informace najdete v tématu Vytvoření modulu snap-in prostředí Windows PowerShell.
Import modulu pomocí Import-Module (PowerShell 2.0)
PowerShell 2.0 používá k importu modulů odpovídající rutinu Import-Module. Při spuštění této rutiny prostředí Windows PowerShell vyhledá zadaný modul v adresářích zadaných v proměnné PSModulePath
. Když se zadaný adresář najde, Windows PowerShell vyhledá soubory v následujícím pořadí: soubory manifestu modulu (.psd1
), soubory modulu skriptu (.psm1
), binární soubory modulů (.dll). Další informace o přidávání adresářů do vyhledávání najdete v tématu about_PSModulePath.
Následující kód popisuje, jak importovat modul:
Import-Module myModule
Za předpokladu, že modul myModule byl umístěn v PSModulePath
, PowerShell by načetl modul myModule do aktivní paměti. Pokud se modul myModule nenachází v cestě PSModulePath
, můžete powershellu explicitně sdělit, kde ho najít:
Import-Module -Name C:\myRandomDirectory\myModule -Verbose
Pomocí parametru -Verbose
můžete také zjistit, co se exportuje z modulu a co se importuje do aktivní paměti. Exporty i importy omezují to, co je uživateli vystavené: rozdíl spočívá v tom, kdo řídí viditelnost. Exporty jsou v podstatě řízeny kódem v rámci modulu. Naproti tomu importy jsou řízeny voláním Import-Module
. Další informace najdete v tématu Omezení členů importovanýchníže.
Implicitní import modulu (PowerShell 3.0)
Počínaje windows PowerShellem 3.0 se moduly importují automaticky, když se v příkazu použije jakákoli rutina nebo funkce v modulu. Tato funkce funguje na jakémkoli modulu v adresáři, který je součástí hodnoty PSModulePath proměnné prostředí. Pokud modul neuložíte na platnou cestu, můžete je přesto načíst pomocí explicitní importu modulu, jak je popsáno výše.
Následující akce aktivují automatický import modulu, označovaného také jako "automatické načítání modulu".
Použití rutiny v příkazu Zadáním
Get-ExecutionPolicy
například importuje modul Microsoft.PowerShell.Security, který obsahuje rutinuGet-ExecutionPolicy
.K získání příkazu použijte rutinu Get-Command. Zadáním
Get-Command Get-JobTrigger
například importuje modul PSScheduledJob, který obsahuje rutinuGet-JobTrigger
. PříkazGet-Command
, který obsahuje zástupné znaky, se považuje za zjišťování a neaktivuje import modulu.Pomocí rutiny Get-Help získáte nápovědu pro rutinu. Zadáním
Get-Help Get-WinEvent
například importuje modul Microsoft.PowerShell.Diagnostics, který obsahuje rutinuGet-WinEvent
.
Pro podporu automatického importu modulů získá rutina Get-Command
všechny rutiny a funkce ve všech nainstalovaných modulech, i když se modul neimportuje do relace. Další informace najdete v tématu nápovědy pro rutinu Get-Command.
Proces importu
Při importu modulu se pro modul vytvoří nový stav relace a v paměti se vytvoří objekt System.Management.Automation.PSModuleInfo objekt. Pro každý importovaný modul se vytvoří stav relace (to zahrnuje kořenový modul a všechny vnořené moduly). Členové exportované z kořenového modulu, včetně všech členů exportovaných do kořenového modulu všemi vnořenými moduly, se pak naimportují do stavu relace volajícího.
Metadata členů exportovaných z modulu mají vlastnost ModuleName. Tato vlastnost se naplní názvem modulu, který je exportoval.
Varování
Pokud název exportovaného člena používá neschválené příkazy nebo pokud název člena používá omezené znaky, zobrazí se upozornění při spuštění rutiny Import-Module.
Rutina Import-Module ve výchozím nastavení nevrací žádné objekty do kanálu. Rutina však podporuje PassThru parametr, který lze použít k vrácení objektu System.Management.Automation.PSModuleInfo pro každý importovaný modul. Pokud chcete odeslat výstup hostiteli, měli by uživatelé spustit rutinu Write-Host.
Omezení importovaných členů
Při importu modulu pomocí rutiny Import-Module se ve výchozím nastavení všechny exportované členy modulu importují do relace, včetně všech příkazů exportovaných do modulu vnořeným modulem. Ve výchozím nastavení se proměnné a aliasy neexportují. Chcete-li omezit členy, které jsou exportovány, použijte manifest modulu . Pokud chcete omezit importované členy, použijte následující parametry rutiny Import-Module
.
funkce: Tento parametr omezuje exportované funkce. (Pokud používáte manifest modulu, podívejte se na klíč FunctionsToExport.)
` rutiny: Tento parametr omezuje exportované rutiny (Pokud používáte manifest modulu, podívejte se na klíč RutinyToExport.)
Proměnná: Tento parametr omezuje exportované proměnné (Pokud používáte manifest modulu, podívejte se na klíč VariablesToExport.)
Alias: Tento parametr omezuje exportované aliasy (Pokud používáte manifest modulu, podívejte se na klíč AliasesToExport.)