Get-Module

Uveďte moduly importované v aktuální relaci nebo které lze importovat z psModulePath.

Syntax

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

Description

Rutina Get-Module uvádí moduly PowerShellu, které byly importovány nebo které je možné importovat do relace PowerShellu. Bez parametrů získá moduly, Get-Module které byly importovány do aktuální relace. Parametr ListAvailable slouží k výpisu modulů, které jsou k dispozici pro import z cest zadaných v proměnné prostředí PSModulePath ($env:PSModulePath).

Objekt modulu, který Get-Module vrací, obsahuje cenné informace o modulu. Objekty modulu můžete také převést na jiné rutiny, jako jsou rutiny Import-Module a Remove-Module rutiny.

Get-Module vypíše moduly, ale neimportuje je. Počínaje windows PowerShellem 3.0 se moduly automaticky importují při použití příkazu v modulu, ale Get-Module příkaz 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í 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é získat Get-Module a Import-Module importovat moduly MODELU CIM (Common Information Model). Moduly CIM definují rutiny v souborech CDXML (Cmdlet 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++.

Implicitní vzdálená komunikace se dá použít ke správě vzdálených počítačů, které mají povolenou vzdálenou vzdálenou komunikace PowerShellu. Na vzdáleném počítači vytvořte psSession a pak pomocí parametru Get-Module PSSession získejte moduly PowerShellu ve vzdálené relaci. Při importu modulu ze vzdálené relace se importované příkazy spustí v relaci na vzdáleném počítači.

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 Get-Module CIMSession získejte moduly CIM z relace CIM. Při importu modulu CIM pomocí Import-Module rutiny a následném spuštění importovaných příkazů se příkazy spouští implicitně na vzdáleném počítači. 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 vyhledá dostupné moduly v cestě určené proměnnou prostředí $env:PSModulePath . 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

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

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

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

V plně kvalifikovaném názvu modulu funguje hodnota ModuleVersion jako minimální verze. V tomto příkladu se tedy shoduje s modulem Microsoft.PowerShell.Management , který je verze 3.1.0.0 nebo vyšší.

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 objektu, 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 zobrazují 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 $m proměnné.

Druhý příkaz pomocí rutiny Get-Content získá obsah 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žije rutinu New-PSSession k vytvoření psSession na počítači Server01. Příkaz uloží psSession do $s proměnné.

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

Pokud moduly předáte z jiných relací do Import-Module rutiny, Import-Module importuje modul 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ématech 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 $cs proměnné.

Druhý příkaz používá relaci CIM v $cs proměnné ke spuštění Get-Module příkazu 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 Import-Module rutiny, která ho naimportuje do místní relace.

Třetí příkaz spustí rutinu Get-Command na Get-Disk příkazu 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í Get-Disk příkaz. 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ů, souborů modulu skriptů (.psm1) a souborů binárního modulu (.dll). Bez tohoto parametru Get-Module získá pouze výchozí modul v každé složce modulu.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:Uri
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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).

Type:CimSession
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-FullyQualifiedName

Hodnota může být název modulu, úplná specifikace modulu nebo cesta k souboru modulu.

Pokud je hodnota cesta, může být cesta plně kvalifikovaná nebo relativní. Relativní cesta je vyřešena vzhledem ke skriptu, který obsahuje příkaz using.

Pokud je hodnota název nebo specifikace modulu, PowerShell vyhledá zadaný modul v psModulePath .

Specifikace modulu je hashovatelná tabulka s následujícími klíči.

  • ModuleName - Povinný argument Určuje název modulu.
  • GUID - Volitelné určuje identifikátor GUID modulu.
  • Je také povinné zadat aspoň jeden ze tří následujících klíčů.
    • ModuleVersion – Určuje minimální přijatelnou verzi modulu.
    • MaximumVersion – Určuje maximální přijatelnou verzi modulu.
    • RequiredVersion – Určuje přesnou požadovanou verzi modulu. Tuto možnost nelze použít s jinými klíči verze.

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

Type:ModuleSpecification[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters: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 získá pouze moduly, Get-Module které jsou uvedeny v proměnné prostředí PSModulePath a které jsou načteny 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.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 FullyQualifiedName nelze zadat ve stejném příkazu jako parametr Name.

Název nemůže přijmout identifikátor GUID modulu jako hodnotu. Chcete-li vrátit moduly zadáním identifikátoru GUID, použijte místo toho plně kvalifikovaný název.

Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-PSEdition

Získá moduly, které podporují zadanou edici PowerShellu.

Tento parametr přijímá tyto hodnoty:

  • Desktop
  • Core

Rutina Get-Module zkontroluje vlastnost CompatiblePSEditions objektu PSModuleInfo pro zadanou hodnotu a vrátí pouze moduly, které mají nastavenou.

Poznámka:

  • Desktop Edition: Tato edice je založená na rozhraní .NET Framework a zajišťuje kompatibilitu se skripty a moduly cílenými na verze PowerShellu spouštěné na plných edicích Windows, jako je Jádro serveru a Windows Desktop.
  • Core Edition: Tato edice je založená na rozhraní .NET Core a zajišťuje kompatibilitu se skripty a moduly cílenými na verze PowerShellu spouštěné na edicích Windows s nízkými nároky na prostředky, jako je Nano Server a Windows IoT.
Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PSSession

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

Pokud je relace připojená 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í Get-Module -ListAvailable příkazu v PSSession.

Tento parametr byl představen ve Windows PowerShellu 3.0.

Type:PSSession
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters: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 , musíte zadat ListAvailable.

Tento parametr byl představen ve Windows PowerShellu 3.0.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SkipEditionCheck

Přeskočí kontrolu pole CompatiblePSEditions .

Ve výchozím nastavení vynechá moduly v adresáři, Get-Module které nejsou zadány Core v poli CompatiblePSEditions.%windir%\System32\WindowsPowerShell\v1.0\Modules Pokud je tento přepínač nastavený, moduly bez Core zahrnutí, aby se vrátily moduly v cestě modulu Windows PowerShellu, které nejsou kompatibilní s PowerShellem v6 a novějším.

V systému macOS a Linux tento parametr nedělá nic.

Další informace najdete v about_PowerShell_Editions .

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 objektu, který má stejné vlastnosti a metody.

Poznámky

PowerShell obsahuje následující aliasy pro Get-Module:

  • Všechny platformy:

    • gmo
  • 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í naimportují automaticky a pomocí rutiny Import-Module je můžete importovat.

  • 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, například relace spuštěné rutinou New-PSSession , jsou také relace ve starším stylu, které zahrnují základní moduly snap-in.

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

  • Get-Module Získá pouze moduly v umístěních, která jsou uložena v hodnotě proměnné prostředí PSModulePath ($env:PSModulePath). Rutina Import-Module může importovat moduly do jiných umístění, ale rutinu Get-Module nemůžete použít k jejich získání.

  • Počínaje PowerShellem 3.0 byly také přidány nové vlastnosti do objektu, který Get-Module vrací, což usnadňuje získání informací o modulech i před jejich importem. Před importem se vyplní všechny vlastnosti. Patří mezi ně vlastnosti ExportedCommands, ExportedCmdlets a ExportedFunctions , které uvádějí příkazy, které modul exportuje.

  • Parametr ListAvailable získá pouze dobře vytvořené moduly, tj. 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 uzavřeny do složky modulu, zadejte parametry ListAvailable i All .

  • Aby bylo možné používat funkci relace CIM, musí mít vzdálený počítač vzdálenou vzdálenou správu WS-Management a rozhraní WMI (Windows Management Instrumentation), což je implementace modelu CIM (Common Information Model). 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.