O modulech
Krátký popis
Vysvětluje, jak nainstalovat, importovat a používat moduly PowerShellu.
Dlouhý popis
Modul je balíček, který obsahuje příkazy PowerShellu, jako jsou rutiny, zprostředkovatele, funkce, pracovní postupy, proměnné a aliasy.
Lidé, kteří píší příkazy, můžou pomocí modulů uspořádat své příkazy a sdílet je s ostatními. Lidé, kteří moduly přijímají, můžou přidat příkazy v modulech do svých relací PowerShellu a používat je stejně jako předdefinované příkazy.
Toto téma vysvětluje, jak používat moduly PowerShellu. Informace o tom, jak psát moduly PowerShellu, najdete v tématu Psaní modulu PowerShellu.
Co je modul?
Modul je balíček příkazů. Všechny rutiny a zprostředkovatele v relaci jsou přidány modulem nebo modulem snap-in.
Automatické načítání modulu
Od PowerShellu 3.0 PowerShell automaticky importuje moduly při prvním spuštění libovolného příkazu v nainstalovaném modulu. Příkazy v modulu teď můžete používat bez konfigurace nastavení nebo profilu, takže po instalaci modulů do počítače není potřeba spravovat.
Příkazy v modulu se také snadněji hledají. Rutina Get-Command
teď získá všechny příkazy ve všech nainstalovaných modulech, i když ještě nejsou v relaci, takže můžete najít příkaz a použít ho bez importu.
Každý z následujících příkladů způsobí import modulu, který obsahuje Get-Mailbox
, do relace.
Spuštění příkazu
Get-Mailbox -Identity Chris
Získání příkazu
Get-Command Get-Mailbox
Získání nápovědy k příkazu
Get-Help Get-Mailbox
Get-Command
Příkazy, které obsahují zástupný znak (*), se považují za příkazy pro zjišťování, nepoužívají a neimportují žádné moduly.
Automaticky se importují pouze moduly, které jsou uloženy v umístění určeném proměnnou prostředí PSModulePath. Moduly v jiných umístěních se musí importovat spuštěním rutiny Import-Module
.
Příkazy, které používají zprostředkovatele PowerShellu, také modul automaticky neimportují. Pokud například použijete příkaz, který vyžaduje jednotku WSMan:, například rutinu Get-PSSessionConfiguration
, možná budete muset spustit rutinu Import-Module
pro import modulu Microsoft.WSMan.Management , který tuto jednotku WSMan:
obsahuje.
Přesto můžete spustit Import-Module
příkaz pro import modulu a použít proměnnou $PSModuleAutoloadingPreference
k povolení, zakázání a konfiguraci automatického importu modulů. Další informace najdete v tématu about_Preference_Variables.
Jak používat modul
Pokud chcete použít modul, proveďte následující úlohy:
- Nainstalujte modul. (Často se to dělá za vás.)
- Vyhledejte příkazy, které modul přidal.
- Použijte příkazy, které modul přidal.
Toto téma vysvětluje, jak tyto úlohy provádět. Obsahuje také další užitečné informace o správě modulů.
Postup instalace modulu
Pokud modul obdržíte jako složku se soubory, musíte si ho nainstalovat do počítače, abyste ho mohli použít v PowerShellu.
Většina modulů je nainstalovaná za vás. PowerShell se dodává s několika předinstalovanými moduly, které se někdy označují jako "základní" moduly. Pokud mají funkce, které jsou součástí operačního systému, na počítačích s Windows rutiny pro jejich správu, jsou tyto moduly předinstalovány. Když nainstalujete funkci Systému Windows, například pomocí Průvodce přidáním rolí a funkcí v Správce serveru nebo pomocí dialogového okna Zapnout nebo vypnout funkce systému Windows v Ovládací panely, nainstalují se všechny moduly PowerShellu, které jsou součástí této funkce. Mnoho dalších modulů je součástí instalačního programu nebo instalačního programu, který modul nainstaluje.
Pomocí následujícího příkazu vytvořte adresář Modules pro aktuálního uživatele:
New-Item -Type Directory -Path $HOME\Documents\WindowsPowerShell\Modules
Zkopírujte celou složku modulu do adresáře Modules. Ke zkopírování složky můžete použít libovolnou metodu, včetně Průzkumníka Windows a Cmd.exe a PowerShellu. V PowerShellu použijte rutinu Copy-Item
. Pokud například chcete zkopírovat složku MyModule z C:\ps-test\MyModule
adresáře Modules, zadejte:
Copy-Item -Path C:\ps-test\MyModule -Destination `
$HOME\Documents\WindowsPowerShell\Modules
Modul můžete nainstalovat do libovolného umístění, ale instalace modulů do výchozího umístění modulu usnadňuje jejich správu. Další informace o výchozích umístěních modulů najdete v části Umístění prostředků modulu a DSC a PSModulePath .
Jak najít nainstalované moduly
Pokud chcete najít moduly, které jsou nainstalované ve výchozím umístění modulu, ale ještě nejsou importované do relace, zadejte:
Get-Module -ListAvailable
Pokud chcete najít moduly, které už byly importovány do relace, zadejte na příkazovém řádku PowerShellu:
Get-Module
Další informace o rutině najdete v Get-Module
tématu Get-Module.
Jak najít příkazy v modulu
Pomocí rutiny Get-Command
vyhledejte všechny dostupné příkazy. Pomocí parametrů rutiny Get-Command
můžete filtrovat příkazy, například podle modulu, názvu a podstatného jména.
Pokud chcete najít všechny příkazy v modulu, zadejte:
Get-Command -Module <module-name>
Pokud chcete například najít příkazy v modulu BitsTransfer, zadejte:
Get-Command -Module BitsTransfer
Další informace o rutině najdete v Get-Command
tématu Get-Command.
Jak získat nápovědu k příkazům v modulu
Pokud modul obsahuje soubory nápovědy pro příkazy, které exportuje, zobrazí rutina Get-Help
témata nápovědy. Použijte stejný Get-Help
formát příkazu, který byste použili k získání nápovědy pro jakýkoli příkaz v PowerShellu.
Počínaje PowerShellem 3.0 si můžete stáhnout soubory nápovědy pro modul a stáhnout aktualizace souborů nápovědy, takže nikdy nebudou zastaralé.
Pokud chcete získat nápovědu pro příkazy v modulu, zadejte:
Get-Help <command-name>
Pokud chcete získat online nápovědu k příkazu v modulu, zadejte:
Get-Help <command-name> -Online
Pokud chcete stáhnout a nainstalovat soubory nápovědy pro příkazy v modulu, zadejte:
Update-Help -Module <module-name>
Další informace najdete v tématech Get-Help a Update-Help.
Jak importovat modul
Možná budete muset importovat modul nebo soubor modulu. Import se vyžaduje, pokud modul není nainstalován v umístěních určených proměnnou prostředí PSModulePath , $env:PSModulePath
nebo se modul skládá ze souboru, například souboru .dll nebo .psm1, namísto typického modulu, který se dodává jako složka.
Můžete se také rozhodnout importovat modul, abyste mohli použít parametry Import-Module
příkazu, například parametr Předpona, který přidává výraznou předponu k názvům všech importovaných příkazů, nebo parametr NoClobber , který brání modulu v přidávání příkazů, které by skryly nebo nahradily existující příkazy v relaci.
K importu modulů použijte rutinu Import-Module
.
Pokud chcete importovat moduly v umístění PSModulePath do aktuální relace, použijte následující formát příkazu.
Import-Module <module-name>
Například následující příkaz importuje modul BitsTransfer do aktuální relace.
Import-Module BitsTransfer
Pokud chcete importovat modul, který není ve výchozím umístění modulu, použijte v příkazu plně kvalifikovanou cestu ke složce modulu.
Pokud například chcete do relace přidat modul TestCmdlets v C:\ps-test
adresáři, zadejte:
Import-Module C:\ps-test\TestCmdlets
Pokud chcete importovat soubor modulu, který není obsažen ve složce modulu, použijte v příkazu plně kvalifikovanou cestu k souboru modulu.
Pokud například chcete do relace přidat modul TestCmdlets.dll v C:\ps-test
adresáři, zadejte:
Import-Module C:\ps-test\TestCmdlets.dll
Další informace o přidávání modulů do relace najdete v tématu Import-Module.
Import modulu do každé relace
Příkaz Import-Module
importuje moduly do aktuální relace PowerShellu. Pokud chcete importovat modul do každé relace PowerShellu, kterou spustíte, přidejte příkaz do profilu PowerShellu Import-Module
.
Další informace o profilech najdete v tématu about_Profiles.
Odebrání modulu
Když odeberete modul, příkazy, které modul přidal, se z relace odstraní.
Pokud chcete z relace odebrat modul, použijte následující formát příkazu.
Remove-Module <module-name>
Například následující příkaz odebere modul BitsTransfer z aktuální relace.
Remove-Module BitsTransfer
Odebrání modulu vrátí operaci importu modulu. Odebráním modulu se modul neodinstaluje. Další informace najdete v tématu Remove-Module.
Umístění prostředků modulu a DSC a PSModulePath
Níže jsou uvedená výchozí umístění pro moduly PowerShellu. Počínaje PowerShellem 4.0 se po zavedení DSC zavedl nový výchozí modul a složka prostředků DSC. Další informace o DSC najdete v tématu about_DesiredStateConfiguration.
Systém:
$PSHOME\Modules
nebo ($env:windir\System32\WindowsPowerShell\v1.0\Modules
) Systémové moduly jsou ty, které se dodávají s Windows a PowerShellem.Počínaje PowerShellem 4.0 se při zavedení powershellového Desired State Configuration (DSC) ukládají prostředky DSC, které jsou součástí PowerShellu
$PSHOME\Modules\PSDesiredStateConfiguration\DSCResources
, také do$PSHOME\Modules
složky .Aktuální uživatel:
$HOME\Documents\WindowsPowerShell\Modules
($env:UserProfile\Documents\WindowsPowerShell\Modules
)nebo
$HOME\My Documents\WindowsPowerShell\Modules
($env:UserProfile\My Documents\WindowsPowerShell\Modules
)Toto je umístění pro moduly přidané uživatelem před PowerShellem 4.0.
V PowerShellu 4.0 a novějších verzích PowerShellu se moduly přidané uživatelem a prostředky DSC ukládají do C:\Program Files\WindowsPowerShell\Modules
. Moduly a prostředky DSC v tomto umístění jsou přístupné všem uživatelům počítače. Tato změna byla nutná, protože modul DSC běží jako místní systém a nemohl získat přístup k cestám specifickým pro uživatele, například $home\Documents\WindowsPowerShell\Modules
.
Počínaje PowerShellem 5.0 a přidáním modulu PowerShellGet a Galerie prostředí PowerShell prostředků Install-Module
vytvořených komunitou a Microsoftem příkaz ve výchozím nastavení nainstaluje moduly a prostředky C:\Program Files\WindowsPowerShell\Modules
DSC.
Poznámka: Pokud chcete přidat nebo změnit soubory v $env:Windir\System32
adresáři, spusťte PowerShell pomocí možnosti Spustit jako správce.
Výchozí umístění modulů v systému můžete změnit změnou hodnoty proměnné prostředí PSModulePath . $Env:PSModulePath
Proměnná prostředí PSModulePath je modelována v proměnné prostředí Path a má stejný formát.
Pokud chcete zobrazit výchozí umístění modulů, zadejte:
$Env:PSModulePath
Pokud chcete přidat výchozí umístění modulu, použijte následující formát příkazu.
$Env:PSModulePath = $Env:PSModulePath + ";<path>"
Středník (;) v příkazu odděluje novou cestu od cesty, která jí předchází v seznamu.
Pokud například chcete přidat C:\ps-test\Modules
adresář, zadejte:
$Env:PSModulePath + ";C:\ps-test\Modules"
Když přidáte cestu k PSModulePath, Get-Module
příkazy Import-Module
obsahují moduly v této cestě.
Hodnota, kterou nastavíte, ovlivní pouze aktuální relaci. Pokud chcete, aby byla změna trvalá, přidejte příkaz do profilu PowerShellu nebo pomocí příkazu System in Ovládací panely změňte hodnotu proměnné prostředí PSModulePath v registru.
Chcete-li také vytvořit trvalou změnu, můžete také použít SetEnvironmentVariable metoda System.Environment třídy přidat cestu k PSModulePath proměnné prostředí.
Další informace o proměnné PSModulePath najdete v tématu about_Environment_Variables.
Moduly a konflikty názvů
Ke konfliktům názvů dochází, pokud má více než jeden příkaz v relaci stejný název. Import modulu způsobí konflikt názvů, když příkazy v modulu mají stejné názvy jako příkazy nebo položky v relaci.
Konflikty názvů můžou vést ke skrytí nebo nahrazení příkazů.
Skrytý
Příkaz je skrytý, pokud se při zadání názvu příkazu nespustí, ale můžete ho spustit jiným způsobem, například kvalifikací názvu příkazu názvem modulu nebo modulu snap-in, ze kterého příkaz pochází.
Nahrazen
Příkaz se nahradí, když ho nemůžete spustit, protože byl přepsán příkazem se stejným názvem. I když odeberete modul, který konflikt způsobil, nemůžete spustit nahrazený příkaz, dokud nerestartujete relaci.
Import-Module
může přidat příkazy, které skrývají a nahrazují příkazy v aktuální relaci. Příkazy v relaci můžou také skrýt příkazy, které modul přidal.
Ke zjištění konfliktů názvů použijte parametr All rutiny Get-Command
. Počínaje PowerShellem 3.0 získá jenom ty příkazy, Get-Command
které se spustí při zadání názvu příkazu. Parametr All načte všechny příkazy s konkrétním názvem v relaci.
Pokud chcete zabránit konfliktům názvů, použijte parametry NoClobber nebo Prefix rutiny Import-Module
. Předpona parametru přidá předponu k názvům importovaných příkazů, aby byly v relaci jedinečné. Parametr NoClobber neimportuje žádné příkazy, které by skrývaly nebo nahradily existující příkazy v relaci.
Pomocí parametrů Import-Module
Alias, Rutina, Funkce a Proměnná můžete také vybrat jenom příkazy, které chcete importovat, a vyloučit příkazy, které v relaci způsobují konflikty názvů.
Autoři modulů mohou zabránit konfliktům názvů tím, že pomocí vlastnosti DefaultCommandPrefix manifestu modulu přidá výchozí předponu ke všem názvům příkazů. Hodnota prefix parametr má přednost před hodnotou DefaultCommandPrefix.
I když je příkaz skrytý, můžete ho spustit tak, že název příkazu kvalifikujete názvem modulu nebo modulu snap-in, ze kterého pochází.
Pravidla priority příkazů PowerShellu určují, který příkaz se spustí, když relace obsahuje příkazy se stejným názvem.
Pokud například relace obsahuje funkci a rutinu se stejným názvem, PowerShell ve výchozím nastavení funkci spustí. Pokud relace obsahuje příkazy stejného typu se stejným názvem, například dvě rutiny se stejným názvem, spustí se ve výchozím nastavení naposledy přidaný příkaz.
Další informace, včetně vysvětlení pravidel priority a pokynů pro spouštění skrytých příkazů, najdete v tématu about_Command_Precedence.
Moduly a moduly snap in
Do relace můžete přidávat příkazy z modulů a modulů snap-in. Moduly můžou přidávat všechny typy příkazů, včetně rutin, zprostředkovatelů a funkcí a položek, jako jsou proměnné, aliasy a jednotky PowerShellu. Moduly snap-in můžou přidávat jenom rutiny a zprostředkovatele.
Před odebráním modulu nebo modulu snap-in z relace pomocí následujících příkazů určete, které příkazy se odeberou.
K vyhledání zdroje rutiny v relaci použijte následující formát příkazu:
Get-Command <cmdlet-name> | Format-List -Property verb,noun,pssnapin,module
Pokud například chcete najít zdroj rutiny Get-Date
, zadejte:
Get-Command Get-Date | Format-List -Property verb,noun,module
Další informace o modulech snap-in PowerShell najdete v tématu about_PSSnapins.
Upozornění a chyby související s modulem
Příkazy, které modul exportuje, by se měly řídit pravidly pojmenování příkazů PowerShellu. Pokud importovaný modul exportuje rutiny nebo funkce, které mají v názvech neschválené příkazy, zobrazí rutina Import-Module
následující zprávu upozornění.
UPOZORNĚNÍ: Některé názvy importovaných příkazů obsahují neschválené příkazy, které by mohly být méně zjistitelné. Pokud chcete zobrazit seznam schválených sloves, použijte parametr Verbose pro podrobnější Get-Verb.
Tato zpráva je pouze upozorněním. Celý modul se pořád naimportuje, včetně nevyhovujících příkazů. I když se zpráva zobrazí uživatelům modulu, měl by problém s pojmenováním vyřešit autor modulu.
Pokud chcete zprávu upozornění potlačit, použijte parametr DisableNameChecking rutiny Import-Module
.
Integrované moduly a moduly snap-in
V PowerShellu 2.0 a ve starších hostitelských programech v PowerShellu 3.0 a novějších se základní příkazy nainstalované s PowerShellem zabalí do modulů snap-in, které se automaticky přidají do každé relace PowerShellu.
Od PowerShellu 3.0 se u hostitelských programů, které implementují InitialSessionState.CreateDefault2
rozhraní API pro počáteční stav relace, ve výchozím nastavení do každé relace přidá modul snap-in Microsoft.PowerShell.Core. Moduly se načtou automaticky při prvním použití.
Poznámka
Vzdálené relace, včetně relací spouštěných pomocí New-PSSession
rutiny , jsou relace staršího stylu, ve kterých jsou integrované příkazy zabalené v modulech snap-in.
Následující moduly (nebo moduly snap-in) se instalují s PowerShellem.
- Microsoft.PowerShell.Archive
- Microsoft.PowerShell.Core
- Microsoft.PowerShell.Diagnostics
- Microsoft.PowerShell.Host
- Microsoft.PowerShell.Management
- Microsoft.PowerShell.ODataUtils
- Microsoft.PowerShell.Security
- Microsoft.PowerShell.Utility
- Microsoft.WSMan.Management
- PackageManagement
- PowerShellGet
- PSDesiredStateConfiguration
- PSReadline
- PSScheduledJob
- PSWorkflow
- PSWorkflowUtility
- ISE
Protokolování událostí modulu
Počínaje PowerShellem 3.0 můžete zaznamenávat události spuštění pro rutiny a funkce v modulech PowerShellu a modulech snap-in nastavením vlastnosti LogPipelineExecutionDetails modulů a modulů snap-in na $True
.
Protokolování modulů ve všech relacích PowerShellu můžete povolit také pomocí nastavení Zásady skupiny Zapnout protokolování modulu. Další informace najdete v tématu about_EventLogs a about_Group_Policy_Settings.
Viz také
about_DesiredStateConfiguration