Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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, poskytovatelé, funkce, pracovní postupy, proměnné a aliasy.
Lidé, kteří píší příkazy, mohou pomocí modulů organizovat své příkazy a sdílet je s ostatními. Uživatelé, kteří přijímají moduly, mohou přidat příkazy v modulech do svých relací PowerShellu a používat je stejně jako vestavěné příkazy.
Toto téma vysvětluje, jak používat moduly PowerShell. Informace o tom, jak psát moduly PowerShell, najdete v tématu Zápis modulu PowerShellu.
Co je to modul?
Modul je balík příkazů. Všechny rutiny a zprostředkovatele ve vaší relaci jsou přidány modulem nebo modulem snap-in.
Automatické načítání modulu
Počínaje PowerShellem 3.0 PowerShell importuje moduly automaticky při prvním spuštění jakéhokoli příkazu v nainstalovaném modulu. Nyní můžete používat příkazy v modulu bez jakéhokoli nastavení nebo konfigurace profilu, takže po instalaci modulů do počítače není nutné je spravovat.
Příkazy v modulu lze také snadněji najít. Rutina Get-Command nyní 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 jej bez importu.
Každý z následujících příkladů způsobí, že modul obsahující Get-Mailbox bude importován do vaší relace.
Spuštění příkazu
Get-Mailbox -Identity ChrisZískání příkazu
Get-Command Get-MailboxZískání nápovědy k příkazu
Get-Help Get-Mailbox
Get-Command Příkazy, které obsahují zástupný znak (*), jsou považovány za příkazy pro zjišťování, nikoli pro použití 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 je nutné importovat spuštěním rutiny Import-Module .
Příkazy, které používají poskytovatele PowerShellu, také automaticky neimportují modul. Pokud například použijete příkaz, který vyžaduje jednotku WSMan:, jako je například rutina Get-PSSessionConfiguration , možná budete muset spustit rutinu Import-Module pro import modulu Microsoft.WSMan.Management , který obsahuje WSMan: jednotku.
Stále 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 části about_Preference_Variables.
Jak používat modul
Chcete-li použít modul, proveďte následující úlohy:
- Nainstalujte modul. (To se často 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ů.
Jak nainstalovat modul
Pokud obdržíte modul jako složku se soubory, musíte jej nainstalovat do počítače, abyste jej mohli používat v PowerShellu.
Většina modulů se instaluje za vás. PowerShell je dodáván s několika předinstalovanými moduly, někdy označovanými jako "základní" moduly. Pokud jsou v počítačích se systémem Windows funkce obsažené v operačním systému vybaveny rutinami pro jejich správu, jsou tyto moduly předinstalovány. Při instalaci funkce systému Windows, například pomocí Průvodce přidáním rolí a funkcí ve Správci serveru nebo dialogového okna Zapnout nebo vypnout funkce systému Windows v Ovládacích panelech, se nainstalují všechny moduly PowerShellu, které jsou součástí této funkce. Mnoho dalších modulů je dodáváno v instalačním programu nebo instalačním 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, stejně jako PowerShell. V PowerShellu použijte rutinu Copy-Item. Chcete-li například zkopírovat složku MyModule z C:\ps-test\MyModule do 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 správu. Další informace o výchozích umístěních modulů najdete v části Umístění prostředků modulů a DSC a PSModulePath .
Jak najít nainstalované moduly
Chcete-li vyhledat moduly, které jsou nainstalovány ve výchozím umístění modulu, ale ještě nebyly importovány do vaší relace, zadejte:
Get-Module -ListAvailable
Chcete-li najít moduly, které již byly importovány do vaší relace, zadejte na příkazový řádek PowerShellu:
Get-Module
Další informace o rutině Get-Module najdete v 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 podle modulu, názvu a druhu.
Pokud chcete najít všechny příkazy v modulu, zadejte:
Get-Command -Module <module-name>
Chcete-li například najít příkazy v modulu BitsTransfer, zadejte:
Get-Command -Module BitsTransfer
Další informace o rutině Get-Command naleznete v 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, rutina Get-Help zobrazí 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 k libovolnému příkazu 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, aby nebyly nikdy zastaralé.
Chcete-li získat nápovědu k příkazům v modulu, zadejte:
Get-Help <command-name>
Chcete-li získat online nápovědu k příkazu v modulu, zadejte:
Get-Help <command-name> -Online
Chcete-li stáhnout a nainstalovat soubory nápovědy k příkazům 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 je vyžadován v případě, že modul není nainstalován v umístěních určených proměnnou $env:PSModulePath nebo se modul skládá ze souboru, jako je například soubor .dll nebo .psm1, namísto typického modulu, který je doručen jako složka.
Můžete se také rozhodnout importovat modul, abyste mohli použít parametry příkazu Import-Module , jako je parametr Prefix, který přidává charakteristickou předponu k názvům podstatných jmen 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 .
Chcete-li 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
Chcete-li importovat modul, který se nenachází ve výchozím umístění modulu, použijte v příkazu úplnou cestu ke složce modulu.
Chcete-li například do adresáře do relace přidat modul C:\ps-test TestCmdlets, zadejte:
Import-Module C:\ps-test\TestCmdlets
Chcete-li importovat soubor modulu, který není obsažen ve složce modulu, použijte v příkazu úplnou cestu k souboru modulu.
Pokud chcete například do relace přidat modul TestCmdlets.dll v adresáři C:\ps-test, zadejte:
Import-Module C:\ps-test\TestCmdlets.dll
Další informace o přidávání modulů do relace naleznete v tématu Import-Module.
Jak importovat modul do každé relace
Příkaz Import-Module importuje moduly do vaší aktuální relace v PowerShellu. Pokud chcete importovat modul do každé spuštěné relace PowerShellu, přidejte do profilu PowerShellu příkaz Import-Module.
Další informace o profilech, viz about_Profiles.
Jak odebrat modul
Když modul odeberete, příkazy přidaného modulu se z relace odstraní.
Chcete-li odebrat modul z relace, 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 obrátí operaci importu modulu. Odebráním modulu se modul neodinstaluje. Další informace najdete v tématu Remove-Module.
Umístění prostředků modulů a DSC a PSModulePath
Níže jsou uvedená výchozí umístění pro moduly PowerShell. Počínaje PowerShellem 4.0 byl se zavedením DSC zaveden nový výchozí modul a složka prostředků DSC. Další informace o DSC najdete v části about_DesiredStateConfiguration.
Systém:
$PSHOME\Modulesnebo ($env:windir\System32\WindowsPowerShell\v1.0\Modules) Systémové moduly jsou ty, které jsou dodávány s Windows a PowerShellem.Počínaje PowerShellem 4.0, kdy byla zavedena konfigurace požadovaného stavu PowerShellu (DSC), jsou prostředky DSC, které jsou součástí PowerShellu, uloženy také v
$PSHOME\Modulesadresáři ve složce$PSHOME\Modules\PSDesiredStateConfiguration\DSCResources.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 jsou moduly přidané uživatelem a prostředky DSC uloženy v .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 nemůže přistupovat k cestám specifickým pro uživatele, jako je $home\Documents\WindowsPowerShell\Modulesnapříklad .
Počínaje PowerShellem 5.0 s přidáním modulu PowerShellGet a Galerie prostředí PowerShell komunitních a Microsoft vytvořených prostředků Install-Module příkaz ve výchozím nastavení nainstaluje moduly a prostředky C:\Program Files\WindowsPowerShell\Modules DSC.
Poznámka: Chcete-li přidat nebo změnit soubory v adresáři $env:Windir\System32 , spusťte PowerShell s možností "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 na proměnné prostředí Path a má stejný formát.
Chcete-li zobrazit výchozí umístění modulů, zadejte:
$Env:PSModulePath
Chcete-li 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í v seznamu předchází.
Chcete-li například přidat C:\ps-test\Modules adresář, zadejte:
$Env:PSModulePath + ";C:\ps-test\Modules"
Když přidáte cestu k PSModulePathGet-Module a Import-Module příkazy zahrnou moduly do této cesty.
Hodnota, kterou nastavíte, má vliv pouze na aktuální relaci. Pokud chcete, aby změna byla trvalá, přidejte příkaz do svého profilu PowerShell nebo pomocí ovládacího panelu Systém změňte hodnotu proměnné prostředí PSModulePath v registru.
Chcete-li, aby byla změna trvalá, můžete také použít metodu SetEnvironmentVariabletřídy System.Environment k přidání cesty k proměnné prostředí PSModulePath .
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í v případě, že více příkazů v relaci má 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 nejedná o příkaz, který se spustí při zadání názvu příkazu, ale můžete jej spustit pomocí jiné metody, například kvalifikováním názvu příkazu názvem modulu nebo modulu snap-in, ze kterého pochází.
Nahrazený
Příkaz je nahrazen, pokud jej nelze spustit, protože byl přepsán příkazem se stejným názvem. I když odeberete modul, který způsobil konflikt, nelze spustit nahrazený příkaz, dokud nerestartujete relaci.
Import-Module může přidat příkazy, které skryjí a nahradí příkazy v aktuální relaci. Příkazy ve vaší relaci mohou také skrýt příkazy, které modul přidal.
Pro zjištění konfliktů názvů použijte parametr All příkazu Get-Command. Počínaje PowerShellem 3.0 získá pouze příkazy, Get-Command které se spustí při zadání názvu příkazu. Parametr All získá všechny příkazy s konkrétním názvem v relaci.
Chcete-li zabránit konfliktům názvů, použijte parametry NoClobber nebo Prefix rutiny Import-Module.
Parametr Prefix přidá k názvům importovaných příkazů předponu, aby byly v relaci jedinečné. Parametr NoClobber neimportuje žádné příkazy, které by skryly nebo nahradily existující příkazy v relaci.
Můžete také použít alias, rutiny, funkcea parametry proměnnéImport-Module vybrat pouze příkazy, které chcete importovat, a můžete vyloučit příkazy, které způsobují konflikty názvů v relaci.
Autoři modulů můžou zabránit konfliktům názvů pomocí vlastnosti DefaultCommandPrefix manifestu modulu a přidat výchozí předponu ke všem názvům příkazů. Hodnota parametru Prefix má přednost před hodnotou DefaultCommandPrefix.
I když je příkaz skrytý, můžete jej 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í spustí funkci. Pokud relace obsahuje příkazy stejného typu se stejným názvem, například dvě rutiny se stejným názvem, ve výchozím nastavení spustí 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 zásuvné moduly
Do relace můžete přidávat příkazy z modulů a modulů snap-in. Moduly mohou 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 PowerShell. Moduly snap-in můžou přidávat jenom rutiny a poskytovatele.
Před odebráním modulu nebo modulu snap-in z relace určete pomocí následujících příkazů, které budou odebrány.
Pokud chcete najít zdroj rutiny ve vaší relaci, použijte následující formát příkazu:
Get-Command <cmdlet-name> | Format-List -Property verb,noun,pssnapin,module
Pokud chcete například 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.
Varová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ázvu neschválené příkazy, zobrazí rutina Import-Module následující zprávu s upozorněním.
UPOZORNĚNÍ: Některé importované názvy příkazů zahrnují neschválené příkazy, které by mohly být méně zjistitelné. Seznam schválených příkazů zobrazíte pomocí podrobného parametru pro další podrobnosti nebo typ Get-Verb.
Tato zpráva je pouze upozornění. Kompletní modul se stále importuje, včetně nevyhovujících příkazů. I když se zpráva zobrazuje uživatelům modulu, měl by problém s pojmenováním vyřešit autor modulu.
Chcete-li zprávu upozornění potlačit, použijte parametr DisableNameChecking rutiny Import-Module .
Vestavěné moduly a moduly snap-in
V PowerShellu 2.0 a ve starších hostitelských programech v PowerShellu 3.0 a novějším jsou základní příkazy nainstalované s PowerShellem zabalené do modulů snap-in, které se automaticky přidávají do každé relace PowerShellu.
Počínaje PowerShellem 3.0 se u hostitelských programů, které implementují InitialSessionState.CreateDefault2 rozhraní API pro počáteční stav relace, ve výchozím nastavení přidá modul snap-in Microsoft.PowerShell.Core do každé relace. Moduly se načítají automaticky při prvním použití.
Poznámka:
Vzdálené relace, včetně relací spuštěných pomocí rutiny New-PSSession , jsou relace staršího stylu, ve kterých jsou vestavěné příkazy zabaleny do modulů snap-in.
Následující moduly (nebo moduly snap-in) jsou nainstalovány 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
- Správa balíčků
- Nástroj PowerShellGet
- Konfigurace PSDesiredStateConfiguration
- PSReadline
- PSScheduledJob
- PSWorkflow
- PSWorkflowUtility
- ISE
Protokolování událostí modulu
Počínaje PowerShellem 3.0 můžete zaznamenávat události provádění rutin a funkcí v modulech a modulech snap-in PowerShellu nastavením vlastnosti LogPipelineExecutionDetails modulů a modulů snap-in na $True.
Můžete také použít nastavení Zásady skupiny Zapnout protokolování modulů a povolit protokolování modulů ve všech relacích PowerShellu. Další informace naleznete v části about_EventLogs a about_Group_Policy_Settings.
Viz také
o_ŽádanáStavováKonfigurace