Sdílet prostřednictvím


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:

  1. Nainstalujte modul. (Často se to dělá za vás.)
  2. Vyhledejte příkazy, které modul přidal.
  3. 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:PSModulePathnebo 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\Modulesslož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-ModuleAlias, 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.

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_Command_Precedence

about_DesiredStateConfiguration

about_EventLogs

about_Group_Policy_Settings

about_PSSnapins

Get-Command

Get-Help

Get-Module

Import-Module

Remove-Module