Sdílet prostřednictvím


Get-Module

Získá moduly, které byly importovány nebo které lze importovat do aktuální relace.

Syntaxe

Get-Module
   [[-Name] <String[]>]
   [-FullyQualifiedName <ModuleSpecification[]>]
   [-All]
   [<CommonParameters>]
Get-Module
   [[-Name] <String[]>]
   [-FullyQualifiedName <ModuleSpecification[]>]
   [-ListAvailable]
   [-Refresh]
   -CimSession <CimSession>
   [-CimResourceUri <Uri>]
   [-CimNamespace <String>]
   [<CommonParameters>]
Get-Module
   [[-Name] <String[]>]
   [-FullyQualifiedName <ModuleSpecification[]>]
   [-ListAvailable]
   [-Refresh]
   -PSSession <PSSession>
   [<CommonParameters>]
Get-Module
   [[-Name] <String[]>]
   [-FullyQualifiedName <ModuleSpecification[]>]
   [-All]
   [-ListAvailable]
   [-Refresh]
   [<CommonParameters>]

Description

Rutina Get-Module získá moduly PowerShellu, které byly importovány nebo které je možné importovat, do relace PowerShellu. Objekt modulu, který Get-Module vrací, obsahuje cenné informace o modulu. Objekty modulu můžete také převést na jiné rutiny, jako jsou Import-Module a rutiny Remove-Module.

Bez parametrů Get-Module získá moduly, které byly importovány do aktuální relace. Pokud chcete získat všechny nainstalované moduly, zadejte parametr ListAvailable.

Get-Module získá moduly, ale neimportuje je. Moduly se od windows PowerShellu 3.0 automaticky importují při použití příkazu v modulu, ale příkaz Get-Module neaktivuje automatický import. Moduly můžete také importovat do relace pomocí rutiny Import-Module.

Počínaje Windows PowerShellem 3.0 můžete získat a potom importovat moduly ze vzdálených relací do místní relace. Tato strategie používá funkci Implicitní vzdálené komunikace PowerShellu a je ekvivalentní použití rutiny Import-PSSession. Při použití příkazů v modulech importovaných z jiné relace se příkazy spouští implicitně ve vzdálené relaci. Tato funkce umožňuje spravovat vzdálený počítač z místní relace.

Počínaje windows PowerShellem 3.0 můžete také pomocí Get-Module a Import-Module získat a importovat moduly CIM (Common Information Model), ve kterých jsou rutiny definované v souborech CDXML (Definition XML). Tato funkce umožňuje používat rutiny implementované v nespravovaných sestaveních kódu, jako jsou například rutiny napsané v jazyce C++.

Díky těmto novým funkcím se rutiny Get-Module a Import-Module stanou primárními nástroji pro správu heterogenních podniků, které zahrnují počítače s operačním systémem Windows a počítače s jinými operačními systémy.

Pokud chcete spravovat vzdálené počítače se vzdáleným operačním systémem Windows, které mají povolené vzdálené komunikace PowerShellu a PowerShellu, vytvořte na vzdáleném počítači PSSession a potom pomocí parametru PSSession Get-Module získejte moduly PowerShellu v PSSession. Při importu modulů a následném použití importovaných příkazů v aktuální relaci se příkazy spouští implicitně v PSSession na vzdáleném počítači. Tuto strategii můžete použít ke správě vzdáleného počítače.

Podobnou strategii můžete použít ke správě počítačů, které nemají povolenou vzdálené komunikace PowerShellu. Patří sem počítače, které nepoužívají operační systém Windows, a počítače, které mají PowerShell, ale nemají povolenou vzdálené komunikace PowerShellu.

Začněte vytvořením relace CIM na vzdáleném počítači. Relace CIM je připojení ke službě Windows Management Instrumentation (WMI) ve vzdáleném počítači. Pak pomocí parametru CIMSessionGet-Module získejte moduly CIM z relace CIM. Když importujete modul CIM pomocí rutiny Import-Module a pak spustíte importované příkazy, příkazy se na vzdáleném počítači spustí implicitně. Tuto strategii rozhraní WMI a CIM můžete použít ke správě vzdáleného počítače.

Příklady

Příklad 1: Načtení modulů importovaných do aktuální relace

Get-Module

Tento příkaz získá moduly, které byly importovány do aktuální relace.

Příklad 2: Získání nainstalovaných modulů a dostupných modulů

Get-Module -ListAvailable

Tento příkaz získá moduly nainstalované v počítači a lze je importovat do aktuální relace.

Get-Module hledá dostupné moduly v cestě určené proměnnou prostředí $env:PSModule Path. Další informace o PSModulePath naleznete v tématu about_Modules a about_Environment_Variables.

Příklad 3: Získání všech exportovaných souborů

Get-Module -ListAvailable -All

Tento příkaz získá všechny exportované soubory pro všechny dostupné moduly.

Příklad 4: Získání modulu podle jeho plně kvalifikovaného názvu

$FullyQualifedName = @{ModuleName="Microsoft.PowerShell.Management";ModuleVersion="3.1.0.0"}
Get-Module -FullyQualifiedName $FullyQualifedName | Format-Table -Property Name,Version

Name                             Version
----                             -------
Microsoft.PowerShell.Management  3.1.0.0

Tento příkaz získá modul Microsoft.PowerShell.Management zadáním plně kvalifikovaného názvu modulu pomocí parametru FullyQualifiedName. Příkaz pak výsledky předá do rutiny Format-Table, aby výsledky naformátovat jako tabulku s Name a Verze jako záhlaví sloupců.

Příklad 5: Získání vlastností modulu

Get-Module | Get-Member -MemberType Property | Format-Table Name

Name
----
AccessMode
Author
ClrVersion
CompanyName
Copyright
Definition
Description
DotNetFrameworkVersion
ExportedAliases
ExportedCmdlets
ExportedCommands
ExportedFormatFiles
ExportedFunctions
ExportedTypeFiles
ExportedVariables
ExportedWorkflows
FileList
Guid
HelpInfoUri
LogPipelineExecutionDetails
ModuleBase
ModuleList
ModuleType
Name
NestedModules
OnRemove
Path
PowerShellHostName
PowerShellHostVersion
PowerShellVersion
PrivateData
ProcessorArchitecture
RequiredAssemblies
RequiredModules
RootModule
Scripts
SessionState
Version

Tento příkaz získá vlastnosti PSModuleInfo objekt, který Get-Module vrátí. Pro každý soubor modulu je jeden objekt.

Vlastnosti můžete použít k formátování a filtrování objektů modulu. Další informace o vlastnostech naleznete v tématu PSModuleInfo Vlastnosti.

Výstup obsahuje nové vlastnosti, například Author a CompanyName, které byly zavedeny ve Windows PowerShellu 3.0.

Příklad 6: Seskupení všech modulů podle názvu

Get-Module -ListAvailable -All | Format-Table -Property Name, Moduletype, Path -Groupby Name

Name: AppLocker

Name      ModuleType Path
----      ---------- ----
AppLocker   Manifest C:\Windows\system32\WindowsPowerShell\v1.0\Modules\AppLocker\AppLocker.psd1


   Name: Appx

Name ModuleType Path
---- ---------- ----
Appx   Manifest C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Appx\en-US\Appx.psd1
Appx   Manifest C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Appx\Appx.psd1
Appx     Script C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Appx\Appx.psm1


   Name: BestPractices

Name          ModuleType Path
----          ---------- ----
BestPractices   Manifest C:\Windows\system32\WindowsPowerShell\v1.0\Modules\BestPractices\BestPractices.psd1


   Name: BitsTransfer

Name         ModuleType Path
----         ---------- ----
BitsTransfer   Manifest C:\Windows\system32\WindowsPowerShell\v1.0\Modules\BitsTransfer\BitsTransfer.psd1

Tento příkaz získá všechny soubory modulů, importované i dostupné a pak je seskupí podle názvu modulu. Díky tomu uvidíte soubory modulů, které každý skript exportuje.

Příklad 7: Zobrazení obsahu manifestu modulu

Tyto příkazy zobrazí obsah manifestu modulu pro modul Windows PowerShell BitsTransfer.

Moduly nemusí obsahovat soubory manifestu. Pokud mají soubor manifestu, soubor manifestu se vyžaduje jenom k zahrnutí čísla verze. Soubory manifestu ale často poskytují užitečné informace o modulu, jeho požadavcích a jeho obsahu.

# First command
$m = Get-Module -list -Name BitsTransfer

# Second command
Get-Content $m.Path

@ {
    GUID               = "{8FA5064B-8479-4c5c-86EA-0D311FE48875}"
    Author             = "Microsoft Corporation"
    CompanyName        = "Microsoft Corporation"
    Copyright          = "Microsoft Corporation. All rights reserved."
    ModuleVersion      = "1.0.0.0"
    Description        = "Windows PowerShell File Transfer Module"
    PowerShellVersion  = "2.0"
    CLRVersion         = "2.0"
    NestedModules      = "Microsoft.BackgroundIntelligentTransfer.Management"
    FormatsToProcess   = "FileTransfer.Format.ps1xml"
    RequiredAssemblies = Join-Path $psScriptRoot "Microsoft.BackgroundIntelligentTransfer.Management.Interop.dll"
}

První příkaz získá PSModuleInfo objekt, který představuje BitsTransfer modul. Uloží objekt do proměnné $m.

Druhý příkaz používá rutinu Get-Content k získání obsahu souboru manifestu v zadané cestě. Používá tečku k získání cesty k souboru manifestu, který je uložen ve vlastnosti Path objektu. Výstup zobrazuje obsah manifestu modulu.

Příklad 8: Výpis souborů v adresáři modulu

dir (Get-Module -ListAvailable FileTransfer).ModuleBase

Directory: C:\Windows\system32\WindowsPowerShell\v1.0\Modules\FileTransfer
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        12/16/2008  12:36 PM            en-US
-a---        11/19/2008  11:30 PM      16184 FileTransfer.Format.ps1xml
-a---        11/20/2008  11:30 PM       1044 FileTransfer.psd1
-a---        12/16/2008  12:20 AM     108544 Microsoft.BackgroundIntelligentTransfer.Management.Interop.dll

Tento příkaz zobrazí seznam souborů v adresáři modulu. Toto je další způsob, jak určit, co je v modulu před importem. Některé moduly můžou obsahovat soubory nápovědy nebo soubory ReadMe, které tento modul popisují.

Příklad 9: Získání modulů nainstalovaných v počítači

$s = New-PSSession -ComputerName Server01

Get-Module -PSSession $s -ListAvailable

Tyto příkazy získají moduly nainstalované na počítači Server01.

První příkaz používá rutinu New-PSSession k vytvoření psSession na počítači Server01. Příkaz uloží PSSession do proměnné $s.

Druhý příkaz používá PSSession a ListAvailable parametry Get-Module k získání modulů v PSSession v proměnné $s.

Pokud moduly předáte z jiných relací do rutiny Import-Module, Import-Module modul naimportuje do aktuální relace pomocí funkce implicitní vzdálené komunikace. To je ekvivalentem použití rutiny Import-PSSession. Rutiny z modulu můžete použít v aktuální relaci, ale příkazy, které tyto rutiny používají, skutečně spouští vzdálenou relaci. Další informace najdete v tématu Import-Module a Import-PSSession.

Příklad 10: Správa počítače, který nespouští operační systém Windows

Příkazy v tomto příkladu umožňují spravovat systémy úložiště vzdáleného počítače, na kterém není spuštěn operační systém Windows. V tomto příkladu, protože správce počítače nainstaloval zprostředkovatele rozhraní WMI zjišťování modulů, mohou příkazy CIM používat výchozí hodnoty, které jsou určené pro zprostředkovatele.

$cs = New-CimSession -ComputerName RSDGF03
Get-Module -CimSession $cs -Name Storage | Import-Module
Get-Command Get-Disk

CommandType     Name                  ModuleName
-----------     ----                  ----------
Function        Get-Disk              Storage

Get-Disk

Number Friendly Name              OperationalStatus          Total Size Partition Style
------ -------------              -----------------          ---------- ---------------
0      Virtual HD ATA Device      Online                          40 GB MBR

První příkaz pomocí rutiny New-CimSession vytvoří relaci ve vzdáleném počítači RSDGF03. Relace se připojí ke službě WMI ve vzdáleném počítači. Příkaz uloží relaci CIM do proměnné $cs.

Druhý příkaz používá relaci CIM v proměnné $cs ke spuštění příkazu Get-Module na RSDGF03 počítači. Příkaz k zadání modulu Storage používá parametr Name. Příkaz pomocí operátoru kanálu (|) odešle modul Storage do rutiny Import-Module, která ho naimportuje do místní relace.

Třetí příkaz spustí rutinu Get-Command na příkazu Get-Disk v modulu Storage. Když importujete modul CIM do místní relace, PowerShell převede soubory CDXML, které představují modul CIM, na skripty PowerShellu, které se zobrazí jako funkce v místní relaci.

Čtvrtý příkaz spustí příkaz Get-Disk. Přestože je příkaz zadán v místní relaci, spouští se implicitně na vzdáleném počítači, ze kterého byl importován. Příkaz získá objekty ze vzdáleného počítače a vrátí je do místní relace.

Parametry

-All

Označuje, že tato rutina získá všechny moduly v každé složce modulu, včetně vnořených modulů, souborů manifestu (.psd1), souborů modulu skriptu (.psm1) a binárních modulů (.dll). Bez tohoto parametru Get-Module získá pouze výchozí modul v každé složce modulu.

Typ:SwitchParameter
Position:Named
Default value:False
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-CimNamespace

Určuje obor názvů alternativního poskytovatele CIM, který zveřejňuje moduly CIM. Výchozí hodnota je obor názvů zprostředkovatele rozhraní WMI zjišťování modulů.

Tento parametr použijte k získání modulů CIM z počítačů a zařízení, která nepoužívají operační systém Windows.

Tento parametr byl představen ve Windows PowerShellu 3.0.

Typ:String
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-CimResourceUri

Určuje alternativní umístění pro moduly CIM. Výchozí hodnota je identifikátor URI prostředku zprostředkovatele rozhraní WMI zjišťování modulu ve vzdáleném počítači.

Tento parametr použijte k získání modulů CIM z počítačů a zařízení, která nepoužívají operační systém Windows.

Tento parametr byl představen ve Windows PowerShellu 3.0.

Typ:Uri
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-CimSession

Určuje relaci CIM na vzdáleném počítači. Zadejte proměnnou obsahující relaci CIM nebo příkaz, který získá relaci CIM, například příkaz Get-CimSession.

Get-Module používá připojení relace CIM k získání modulů ze vzdáleného počítače. Když modul naimportujete pomocí rutiny Import-Module a použijete příkazy z importovaného modulu v aktuální relaci, příkazy skutečně běží na vzdáleném počítači.

Tento parametr můžete použít k získání modulů z počítačů a zařízení, na kterých není spuštěn operační systém Windows, a počítačů, které mají PowerShell, ale nemají povolenou vzdálené komunikace PowerShellu.

Parametr CimSession získá všechny moduly v CIMSession. Můžete ale importovat pouze moduly založené na MODELU CIM a XML definice rutiny (CDXML).

Typ:CimSession
Position:Named
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-FullyQualifiedName

Určuje názvy modulů ve formě ModuleSpecification objekty. Tyto objekty jsou popsány v části Poznámky ModuleSpecification Konstruktor (Hashtable) v knihovně MSDN. Například parametr FullyQualifiedName přijímá název modulu zadaný v následujících formátech:

  • @{ModuleName = "modulename"; ModuleVersion = "version_number"}
  • @{ModuleName = "modulename"; ModuleVersion = "version_number"; Guid = "GUID"}

ModuleName a ModuleVersion jsou povinné, ale identifikátor GUID je volitelný.

Parametr FullyQualified Name nelze zadat ve stejném příkazu jako parametr Name.

Typ:ModuleSpecification[]
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:True
Přijmout zástupné znaky:False

-ListAvailable

Označuje, že tato rutina získá všechny nainstalované moduly. Get-Module získá moduly v cestách uvedených v proměnné prostředí PSModulePath. Bez tohoto parametru Get-Module získá pouze moduly uvedené v PSModulePath proměnné prostředí a načtené v aktuální relaci. ListAvailable nevrací informace o modulech, které nejsou nalezeny v proměnné prostředí PSModulePath, i když jsou tyto moduly načteny v aktuální relaci.

Typ:SwitchParameter
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Name

Určuje názvy nebo vzory názvů modulů, které tato rutina získá. Jsou povoleny zástupné znaky. Názvy můžete také převést na Get-Module. Parametr FullyQualified Name nelze zadat ve stejném příkazu jako parametr Name.

Název nemůže přijmout identifikátor GUID modulu jako hodnotu. Pokud chcete vrátit moduly zadáním identifikátoru GUID, použijte místo toho FullyQualifiedName.

Typ:String[]
Position:0
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:True
Přijmout zástupné znaky:True

-PSSession

Získá moduly v zadané uživatelsky spravované relaci PowerShellu (PSSession). Zadejte proměnnou obsahující relaci, příkaz, který získá relaci, například příkaz Get-PSSession, nebo příkaz, který relaci vytvoří, například příkaz New-PSSession.

Při připojení relace ke vzdálenému počítači je nutné zadat parametr ListAvailable.

Příkaz Get-Module, který používá parametr PSSession, je ekvivalentní použití Invoke-Command rutiny ke spuštění příkazu Get-Module -ListAvailable v PSSession.

Tento parametr byl představen ve Windows PowerShellu 3.0.

Typ:PSSession
Position:Named
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Refresh

Označuje, že tato rutina aktualizuje mezipaměť nainstalovaných příkazů. Mezipaměť příkazů se vytvoří při spuštění relace. Umožňuje rutině Get-Command získat příkazy z modulů, které nejsou importovány do relace.

Tento parametr je určený pro scénáře vývoje a testování, ve kterých se od spuštění relace změnil obsah modulů.

Když v příkazu zadáte parametr Refresh, je nutné zadat ListAvailable.

Tento parametr byl představen ve Windows PowerShellu 3.0.

Typ:SwitchParameter
Position:Named
Default value:False
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

Vstupy

String

Do této rutiny můžete převést názvy modulů.

Výstupy

PSModuleInfo

Tato rutina vrací objekty, které představují moduly. Když zadáte parametr ListAvailable, Get-Module vrátí ModuleInfoGrouping objekt, což je typ PSModuleInfo objekt, který má stejné vlastnosti a metody.

Poznámky

  • Počínaje Windows PowerShellem 3.0 se základní příkazy, které jsou součástí PowerShellu, zabalí do modulů. Výjimkou je Microsoft.PowerShell.Core, což je modul snap-in (PSSnapin). Ve výchozím nastavení se do relace přidá jenom modul snap-in Microsoft.PowerShell.Core. Moduly se při prvním použití importují automaticky a můžete je importovat pomocí rutiny Import-Module.

  • Počínaje Windows PowerShellem 3.0 se základní příkazy nainstalované pomocí PowerShellu zabalí do modulů. V prostředí Windows PowerShell 2.0 a v hostitelských programech, které vytvářejí relace staršího stylu v novějších verzích PowerShellu, se základní příkazy zabalí do modulů snap-in (PSSnapins). Výjimkou je Microsoft.PowerShell.Core, což je vždy modul snap-in. Vzdálené relace, jako jsou relace spuštěné rutinou New-PSSession, jsou také relace ve starším stylu, které zahrnují základní moduly snap-in.

    Informace o CreateDefault2 metoda, která vytváří novější relace se základními moduly, naleznete v tématu CreateDefault2 Metoda v knihovně MSDN.

  • Get-Module získá moduly pouze v umístěních, která jsou uložena v hodnotě proměnné prostředí PSModulePath ($env:PSModulePath). K importu modulů do jiných umístění můžete použít parametr Path rutiny Import-Module, ale nemůžete je získat pomocí rutiny Get-Module.

  • Kromě toho se v PowerShellu 3.0 přidaly do objektu, který Get-Module vrací nové vlastnosti, které usnadňují získání informací o modulech i před importem. Před importem se vyplní všechny vlastnosti. Patří sem ExportedCommands, ExportedCmdlets a ExportedFunctions vlastnosti, které uvádějí příkazy, které modul exportuje.

  • Parametr ListAvailable získá pouze správně vytvořené moduly, tedy složky, které obsahují alespoň jeden soubor, jehož základní název je stejný jako název složky modulu. Základní název je název bez přípony názvu souboru. Složky, které obsahují soubory s různými názvy, se považují za kontejnery, ale ne moduly.

    Pokud chcete získat moduly implementované jako soubory .dll, ale nejsou součástí složky modulu, zadejte parametry ListAvailable a Všechny parametry.

  • Aby bylo možné používat funkci relace CIM, musí mít vzdálený počítač WS-Management vzdálenou komunikace a rozhraní WMI (Windows Management Instrumentation), což je implementace modelu CIM (Common Information Model) od Microsoftu. Počítač musí mít také zprostředkovatele rozhraní WMI zjišťování modulů nebo alternativního zprostředkovatele rozhraní WMI, který má stejné základní funkce.

    Funkci relace CIM můžete použít na počítačích, na kterých není spuštěn operační systém Windows a na počítačích s Windows, které mají PowerShell, ale nemají povolenou vzdálené komunikace PowerShellu.

    Parametry CIM můžete také použít k získání modulů CIM z počítačů s povolenou vzdálené komunikace PowerShellu. To zahrnuje místní počítač. Při vytváření relace CIM na místním počítači používá PowerShell k vytvoření relace DCOM místo rozhraní WMI.