Sdílet prostřednictvím


about_Module_Manifests

Krátký popis

Popisuje nastavení a postupy pro zápis souborů manifestu modulu.

Dlouhý popis

Manifest modulu je datový soubor PowerShellu (.psd1) obsahující tabulku hash. Páry klíč-hodnota v tabulce hash popisují obsah a atributy modulu, definují požadavky a řídí způsob zpracování komponent.

Manifesty nejsou potřeba k načtení modulu, ale vyžadují se k publikování modulu do Galerie prostředí PowerShell. Manifesty také umožňují oddělit implementaci modulu od toho, jak se načte. Pomocí manifestu můžete definovat požadavky, kompatibilitu, pořadí načítání a další.

Při použití New-ModuleManifest bez zadání parametrů pro nastavení manifestu zapíše minimální soubor manifestu. Následující fragment kódu ukazuje tento výchozí výstup, vystřižený komentář a mezery pro stručnost:

@{
# RootModule = ''
ModuleVersion = '1.0'
# CompatiblePSEditions = @()
GUID = 'e7184b71-2527-469f-a50e-166b612dfb3b'
Author = 'username'
CompanyName = 'Unknown'
Copyright = '(c) 2022 username. All rights reserved.'
# Description = ''
# PowerShellVersion = ''
# PowerShellHostName = ''
# PowerShellHostVersion = ''
# DotNetFrameworkVersion = ''
# CLRVersion = ''
# ProcessorArchitecture = ''
# RequiredModules = @()
# RequiredAssemblies = @()
# ScriptsToProcess = @()
# TypesToProcess = @()
# FormatsToProcess = @()
# NestedModules = @()
FunctionsToExport = @()
CmdletsToExport = @()
VariablesToExport = '*'
AliasesToExport = @()
# DscResourcesToExport = @()
# ModuleList = @()
# FileList = @()
PrivateData = @{
    PSData = @{
        # Tags = @()
        # LicenseUri = ''
        # ProjectUri = ''
        # IconUri = ''
        # ReleaseNotes = ''
    } # End of PSData hashtable
} # End of PrivateData hashtable
# HelpInfoURI = ''
# DefaultCommandPrefix = ''
}

Před publikováním modulu můžete použít Test-ModuleManifest k ověření manifestu modulu. Test-ModuleManifest vrátí chybu, pokud je manifest neplatný nebo modul nelze importovat do aktuální relace, protože relace nesplňuje požadavky nastavené v manifestu.

Použití kódu skriptu v manifestu modulu

Hodnoty přiřazené nastavení v souboru manifestu můžou být výrazy, které powershell vyhodnocuje. To umožňuje vytvářet cesty a podmíněně přiřazovat hodnoty na základě proměnných.

Při importu modulu pomocí Import-Modulese manifest vyhodnotí v Restricted režimu jazyka. Restricted režim omezuje příkazy a proměnné, které lze použít.

Povolené příkazy

  • Import-LocalizedData
  • ConvertFrom-StringData
  • Write-Host
  • Out-Host
  • Join-Path

Povolené proměnné

  • $PSScriptRoot
  • $PSEdition
  • $EnabledExperimentalFeatures
  • Všechny proměnné prostředí, například $ENV:TEMP

Další informace najdete v tématu about_Language_Modes.

Nastavení manifestu

Následující části podrobně uvádějí všechna dostupná nastavení v manifestu modulu a jejich použití. Začínají synopzí nastavení a následují matice se seznamem:

  • Typ vstupu: Typ objektu, který můžete zadat pro toto nastavení v manifestu.
  • Povinný argument: Pokud je Yestato hodnota, je nastavení nutné k importu modulu i k jeho publikování do Galerie prostředí PowerShell. Pokud ano No, vyžaduje se to ani pro jedno. Pokud jePowerShell Gallery, vyžaduje se pouze pro publikování do Galerie prostředí PowerShell.
  • Hodnota pokud není nastavená: Hodnota, kterou má toto nastavení při importu a není explicitně nastaveno.
  • Přijímá zástupné kóty: Určuje, jestli toto nastavení může mít hodnotu se zástupným znakem, nebo ne.

RootModule

Toto nastavení určuje primární nebo kořenový soubor modulu. Při importu modulu se členové exportované kořenovým souborem modulu importují do stavu relace volajícího.

Hodnota
Typ vstupu System.String
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. No

Hodnota musí být cesta k jedné z těchto věcí:

  • skript (.ps1)
  • modul skriptu (.psm1)
  • manifest modulu (.psd1)
  • sestavení (.dll)
  • soubor XML definice rutiny (.cdxml)
  • Pracovní postup Windows PowerShellu 5.1 (.xaml)

Cesta by měla být relativní vzhledem k manifestu modulu.

Pokud manifest modulu nemá v klíči RootModule žádný kořenový soubor, stane se manifest primárním souborem modulu a modul se stane modulem manifestu (ModuleType = Manifest). Pokud je definován RootModule , typ modulu je určen z použité přípony souboru:

  • a .ps1 nebo .psm1 soubor vytvoří typ modulu Script
  • Soubor .psd1 zpřístupňuje typ modulu Manifest.
  • Soubor vytvoří typ modulu Binary..dll
  • soubor .cdxml vytvoří typ modulu CIM.
  • Soubor .xaml vytvoří typ modulu Workflow

Ve výchozím nastavení se exportují všechny členy modulu v rootModule .

Tip

Rychlost načítání modulů se liší mezi typy modulů Binary, Script a CIM . Další informace najdete v tématu Aspekty vytváření modulů PowerShellu.

Například moduleType tohoto modulu je manifest. Jedinými členy modulu, které tento modul může exportovat, jsou ty, které jsou definovány v modulech určených nastavením NestedModules .

@{
    RootModule = ''
}

Poznámka:

Toto nastavení lze také zadat v manifestech modulu jako ModuleToProcess. I když je tento název pro toto nastavení platný, doporučuje se místo toho použít RootModule .

ModuleVersion

Toto nastavení určuje verzi modulu. Pokud v systému existuje více verzí modulu, při spuštění Import-Modulese ve výchozím nastavení načte nejnovější verze .

Hodnota
Typ vstupu System.String
Povinní účastníci Ano
Hodnota, pokud neníset Nic
Přijímá zástupné kóty. No

Hodnota tohoto nastavení musí být při spuštění Import-Modulekonvertibilní System.Version na hodnotu .

Tento manifest například deklaruje verzi modulu jako '1.2.3'.

@{
    ModuleVersion = '1.2.3'
}

Když importujete modul a zkontrolujete vlastnost Version , všimněte si, že se jedná o objekt System.Version , nikoli řetězec:

$ExampleModule = Import-Module example.psd1
$ExampleModule.Version
$ExampleModule.Version.GetType().Name
Major  Minor  Build  Revision
-----  -----  -----  --------
1      2      3      -1

Version

Kompatibilní sadyPSEditions

Toto nastavení určuje kompatibilní psEditions modulu.

Hodnota
Typ vstupu System.String[]
Přijaté hodnoty Desktop, Core
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. No

Pokud je $nullhodnota tohoto nastavení , modul lze importovat bez ohledu na PSEdition relace. Můžete ho nastavit na jednu nebo více přijatých hodnot.

Informace o PSEdition najdete tady:

Pokud je toto nastavení definováno, modul lze importovat pouze do relace, ve které $PSEdition je hodnota automatické proměnné zahrnuta do tohoto nastavení.

Poznámka:

$PSEdition Vzhledem k tomu, že automatická proměnná byla zavedena ve verzi 5.1, starší verze Windows PowerShellu nemůžou načíst modul, který používá nastavení CompatiblePSEditions.

Manifest tohoto modulu můžete například importovat v libovolné relaci:

@{
    # CompatiblePSEditions = @()
}

Se zadaným nastavením lze tento modul importovat pouze v relacích, kde $PSEdition je Corehodnota automatické proměnné .

@{
    CompatiblePSEditions = @('Core')
}

Identifikátor GUID

Toto nastavení určuje jedinečný identifikátor modulu. Identifikátor GUID slouží k rozlišení mezi moduly se stejným názvem.

Hodnota
Typ vstupu System.String
Povinní účastníci No
Hodnota, pokud neníset 00000000-0000-0000-0000-000000000000
Přijímá zástupné kóty. No

Hodnota tohoto nastavení musí být při spuštění Import-Modulekonvertibilní System.Guid na hodnotu .

Upozornění

I když se nejedná o požadované nastavení, nezadání identifikátoru GUID v manifestu nemá žádné výhody a může vést ke kolizím názvů modulů.

Můžete vytvořit nový identifikátor GUID, který se použije v manifestu:

New-Guid | Select-Object -ExpandProperty Guid
8456b025-2fa5-4034-ae47-e6305f3917ca
@{
    GUID = '8456b025-2fa5-4034-ae47-e6305f3917ca'
}

Pokud na počítači se stejným názvem existuje jiný modul, můžete požadovaný modul naimportovat zadáním plně kvalifikovaného názvu modulu:

Import-Module -FullyQualifiedName @{
    ModuleName    = 'Example'
    GUID          = '8456b025-2fa5-4034-ae47-e6305f3917ca'
    ModuleVersion = '1.0.0'
}

Autor

Toto nastavení identifikuje autora modulu.

Hodnota
Typ vstupu System.String
Povinní účastníci Galerie prostředí PowerShell
Hodnota, pokud neníset $null
Přijímá zástupné kóty. No

Tento manifest deklaruje, že autorem modulu je tým prostředí pro vývojáře společnosti Contoso.

@{
    Author = 'Contoso Developer Experience Team'
}

CompanyName

Toto nastavení identifikuje společnost nebo dodavatele, kteří modul vytvořili.

Hodnota
Typ vstupu System.String
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. No

Tento manifest deklaruje, že modul byl vytvořen společností Contoso, Ltd.

@{
    CompanyName = 'Contoso, Ltd.'
}

Toto nastavení určuje prohlášení o autorských právech pro modul.

Hodnota
Typ vstupu System.String
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. No

Tento manifest deklaruje prohlášení o autorských právech, které si od roku 2022 vyhrazuje všechna práva společnosti Contoso, Ltd.

@{
    Copyright = '(c) 2022 Contoso, Ltd. All rights reserved.'
}

Popis

Toto nastavení popisuje modul na vysoké úrovni.

Hodnota
Typ vstupu System.String
Povinní účastníci Galerie prostředí PowerShell
Hodnota, pokud neníset $null
Přijímá zástupné kóty. No

Tento manifest obsahuje krátký popis. K napsání delšího nebo víceřádkového popisu můžete použít také zde řetězec.

@{
    Description = 'Example commands to show a valid module manifest'
}

PowerShellVersion

Toto nastavení určuje minimální verzi PowerShellu, která tento modul vyžaduje.

Hodnota
Typ vstupu System.String
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. No

Hodnota tohoto nastavení musí být při spuštění Import-Modulekonvertibilní System.Version na hodnotu .

Pokud toto nastavení není nastavené, PowerShell neomezí import modulu na základě aktuální verze.

Tento manifest například deklaruje, že modul je kompatibilní s každou verzí PowerShellu a Windows PowerShellu.

@{
    # PowerShellVersion = ''
}

PowerShellVersion nastavený na 7.2, můžete importovat pouze modul v PowerShellu 7.2 nebo novějším.

@{
    PowerShellVersion = '7.2'
}

PowerShellHostName

Toto nastavení určuje název hostitelského programu PowerShellu, který modul vyžaduje, například hostitel ISE prostředí Windows PowerShell nebo ConsoleHost.

Hodnota
Typ vstupu System.String
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. No

Název hostitele relace najdete pomocí $Host.Name příkazu. Můžete například vidět, že hostitel vzdálené relace je ServerRemoteHost místo ConsoleHost:

$Host.Name
Enter-PSSession -ComputerName localhost
$Host.Name
ConsoleHost
[localhost]: PS C:\Users\username\Documents> $Host.Name
ServerRemoteHost

Tento modul je možné importovat do libovolného hostitele.

@{
    # PowerShellHostName = ''
}

V PowerShellHostName nastaveném na ServerRemoteHost, můžete importovat pouze modul ve vzdálené relaci PowerShellu.

@{
    PowerShellHostName = 'ServerRemoteHost'
}

PowerShellHostVersion

Toto nastavení určuje minimální verzi hostitelského programu PowerShellu, kterou modul vyžaduje.

Hodnota
Typ vstupu System.String
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. No

Hodnota tohoto nastavení musí být při spuštění Import-Modulekonvertibilní System.Version na hodnotu .

Upozornění

I když se toto nastavení dá použít bez nastavení PowerShellHostName , zvyšuje pravděpodobnost neočekávaného chování. Toto nastavení použijte pouze v případě, že používáte také nastavení PowerShellHostName .

Například modul tohoto manifestu lze importovat z jakékoli relace PowerShellu spuštěné v ConsoleHost bez ohledu na verzi hostitele.

@{
    PowerShellHostName = 'ConsoleHost'
    # PowerShellHostVersion = ''
}

Pokud je PowerShellHostVersion nastavený na 5.1, můžete importovat pouze modul z libovolné relace PowerShellu spuštěné v ConsoleHost , kde je verze hostitele 5.1 nebo vyšší.

@{
    PowerShellHostName    = 'ConsoleHost'
    PowerShellHostVersion = '5.1'
}

DotNetFrameworkVersion

Toto nastavení určuje minimální verzi rozhraní Microsoft .NET Framework, kterou modul vyžaduje.

Hodnota
Typ vstupu System.String
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. No

Poznámka:

Toto nastavení platí jenom pro edici PowerShell Desktopu, například Windows PowerShell 5.1, a platí pouze pro verze rozhraní .NET Framework nižší než 4.5. Tento požadavek nemá žádný vliv na novější verze PowerShellu ani rozhraní .NET Framework.

Hodnota tohoto nastavení musí být při spuštění Import-Modulekonvertibilní System.Version na hodnotu .

Tento manifest například deklaruje, že jeho modul lze importovat v libovolné relaci PowerShellu nebo Windows PowerShellu bez ohledu na verzi rozhraní Microsoft .NET Framework.

@{
    # DotNetFrameworkVersion = ''
}

S dotNetFrameworkVersion nastavena na 4.0, můžete importovat tento modul v libovolné relaci Prostředí Windows PowerShell, kde nejnovější dostupná verze rozhraní Microsoft .NET Framework je alespoň 4.0. Můžete ho také importovat v libovolné relaci PowerShellu.

@{
    DotNetFrameworkVersion = '4.0'
}

CLRVersion

Toto nastavení určuje minimální verzi modulu CLR (Common Language Runtime) rozhraní Microsoft .NET Framework, kterou modul vyžaduje.

Hodnota
Typ vstupu System.String
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. No

Poznámka:

Toto nastavení platí jenom pro edici PowerShell Desktopu, například Windows PowerShell 5.1, a platí pouze pro verze rozhraní .NET Framework nižší než 4.5. Tento požadavek nemá žádný vliv na novější verze PowerShellu ani rozhraní .NET Framework.

Hodnota tohoto nastavení musí být při spuštění Import-Modulekonvertibilní System.Version na hodnotu .

Tento manifest například deklaruje, že jeho modul lze importovat v libovolné relaci PowerShellu nebo Windows PowerShellu bez ohledu na verzi modulu CLR rozhraní Microsoft .NET Framework.

@{
    # CLRVersion = ''
}

Pokud je clRVersion nastavena na 4.0, můžete importovat tento modul v libovolné relaci Prostředí Windows PowerShell, kde nejnovější dostupná verze CLR je alespoň 4.0. Můžete ho také importovat v libovolné relaci PowerShellu.

@{
    CLRVersion = '4.0'
}

ProcessorArchitecture

Toto nastavení určuje architekturu procesoru, kterou modul vyžaduje.

Hodnota
Typ vstupu System.String
Přijaté hodnoty None, MSIL, X86, IA64, , Amd64Arm
Povinní účastníci No
Hodnota, pokud neníset None
Přijímá zástupné kóty. No

Hodnota tohoto nastavení musí být při spuštění Import-Modulekonvertibilní System.Reflection.ProcessorArchitecture na hodnotu .

Tento manifest například deklaruje, že jeho modul lze importovat v jakékoli relaci bez ohledu na architekturu procesoru systému.

@{
    # ProcessorArchitecture = ''
}

S ProcesorArchitecture nastavený na Amd64, můžete importovat pouze tento modul v relaci spuštěné na počítači s odpovídající architekturou.

@{
    ProcessorArchitecture = 'Amd64'
}

RequiredModules

Toto nastavení určuje moduly, které musí být ve stavu globální relace. Pokud požadované moduly nejsou ve stavu globální relace, PowerShell je naimportuje. Pokud požadované moduly nejsou dostupné, Import-Module příkaz selže.

Hodnota
Typ vstupu System.String[], System.Collections.Hashtable[]
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. No

Položky pro toto nastavení můžou 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í.

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

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

  • ModuleName - Povinný: 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íčů. Klíč RequiredVersion nelze použít s klíči ani MaximumVersion s klíčiModuleVersion. Přijatelný rozsah verzí pro modul můžete definovat tak ModuleVersion , že zadáte klíče a MaximumVersion klíče společně.
    • ModuleVersion – Určuje minimální přijatelnou verzi modulu.
    • RequiredVersion – Určuje přesnou požadovanou verzi modulu.
    • MaximumVersion – Určuje maximální přijatelnou verzi modulu.

Poznámka:

RequiredVersion byl přidán ve Windows PowerShellu 5.0. MaximumVersion byl přidán ve Windows PowerShellu 5.1.

Tento manifest například deklaruje, že jeho modul nevyžaduje pro své funkce žádné další moduly.

@{
    # RequiredModules = @()
}

Tento manifest deklaruje, že vyžaduje modul PSReadLine. Když spustíte Import-Module tento manifest, PowerShell naimportuje nejnovější verzi psReadLine, která je k dispozici pro relaci. Pokud není k dispozici žádná verze, import vrátí chybu.

@{
    RequiredModules = @(
        'PSReadLine'
    )
}

Tip

V PowerShellu 2.0 Import-Module se požadované moduly neimportuje automaticky. Ověřuje pouze, že požadované moduly jsou ve stavu globální relace.

Tento manifest deklaruje, že vyžaduje verzi modulu PSReadLine, který je součástí vlastní složky modulu. Když spustíte Import-Module tento manifest, PowerShell importuje z zadané cesty dodavatele PSReadLine.

@{
    RequiredModules = @(
        'Vendored\PSReadLine\PSReadLine.psd1'
    )
}

Tento manifest deklaruje, že konkrétně vyžaduje verzi 2.0.0 modulu PSReadLine. Když spustíte Import-Module tento manifest, PowerShell naimportuje verzi 2.0.0 psReadLine, pokud je k dispozici. Pokud není k dispozici, Import-Module vrátí chybu.

@{
    RequiredModules = @(
        @{
            ModuleName      = 'PSReadLine'
            RequiredVersion = '2.0.0'
        }
    )
}

Tento manifest deklaruje, že vyžaduje import modulu PSReadLine ve verzi 2.0.0 nebo vyšší.

@{
    RequiredModules = @(
        @{
            ModuleName    = 'PSReadLine'
            ModuleVersion = '2.0.0'
        }
    )
}

Tento manifest deklaruje, že vyžaduje import modulu PSReadLine ve verzi 2.0.0 nebo nižší.

@{
    RequiredModules = @(
        @{
            ModuleName     = 'PSReadLine'
            MaximumVersion = '2.0.0'
        }
    )
}

Tento manifest deklaruje, že vyžaduje, aby byl modul PSDesiredStateConfiguration importován ve verzi rovnající se nebo vyšší než 2.0.0, ale ne vyšší než 2.99.99.

@{
    RequiredModules = @(
        @{
            ModuleName     = 'PSDesiredStateConfiguration'
            ModuleVersion  = '2.0.0'
            MaximumVersion = '2.99.99'
        }
    )
}

RequiredAssemblies

Toto nastavení určuje soubory sestavení (.dll), které modul vyžaduje. PowerShell načte zadaná sestavení před aktualizací typů nebo formátů, importem vnořených modulů nebo importem souboru modulu zadaného v hodnotě klíče RootModule .

Hodnota
Typ vstupu System.String[]
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. No

Položky pro toto nastavení mohou být název souboru sestavení nebo cesty k tomuto nastavení. Vypište všechna požadovaná sestavení, i když jsou také uvedena jako binární moduly v nastavení NestedModules .

Tento manifest vyžaduje example.dll sestavení. Před načtením jakéhokoli formátování nebo typů souborů zadaných v tomto manifestu se PowerShell načte example.dll ze Assemblies složky umístěné ve stejném adresáři jako manifest modulu.

@{
    RequiredAssemblies = @(
        'Assemblies\Example.dll'
    )
}

ScriptsToProcess

Toto nastavení určuje soubory skriptu (.ps1), které se při importu modulu spouští ve stavu relace volajícího. Tyto skripty můžete použít k přípravě prostředí, stejně jako můžete použít přihlašovací skript.

Hodnota
Typ vstupu System.String[]
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. No

K určení skriptů, které se spouští ve stavu relace modulu, použijte klíč NestedModules .

Při importu tohoto manifestu Initialize.ps1 spustí PowerShell ve vaší aktuální relaci.

@{
    ScriptsToProcess = @(
        'Scripts\Initialize.ps1'
    )
}

Pokud například Initialize.ps1 zapisuje informační zprávy a nastaví proměnnou $ExampleState :

if ([string]::IsNullOrEmpty($ExampleState)) {
    Write-Information "Example not initialized."
    Write-Information "Initializing now..."
    $ExampleState = 'Initialized'
} else {
    Write-Information "Example already initialized."
}

Při importu modulu se skript spustí, zapíše tyto zprávy a nastavení $ExampleState v relaci.

$InformationPreference = 'Continue'
"Example State is: $ExampleState"
Import-Module .\example7x.psd1
"Example State is: $ExampleState"
Import-Module .\example7x.psd1 -Force
Example State is:

Example not initialized.
Initializing now...

Example State is: Initialized

Example already initialized.

TypesToProcess

Toto nastavení určuje typ souborů (.ps1xml), které se spouští při importu modulu.

Hodnota
Typ vstupu System.String[]
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. No

Při importu modulu spustí PowerShell rutinu Update-TypeData se zadanými soubory. Vzhledem k tomu, že soubory typu nejsou vymezeny, mají vliv na všechny stavy relací v relaci.

Další informace o typech souborů najdete v tématu about_Types.ps1xml

Například při importu tohoto manifestu PowerShell načte typy zadané v Example.ps1xml souboru ze Types složky umístěné ve stejném adresáři jako manifest modulu.

@{
    TypesToProcess = @(
        'Types\Example.ps1xml'
    )
}

FormatsToProcess

Toto nastavení určuje formátovací soubory (.ps1xml), které se spustí při importu modulu.

Hodnota
Typ vstupu System.String[]
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. No

Při importu modulu spustí PowerShell rutinu Update-FormatData se zadanými soubory. Vzhledem k tomu, že formátovací soubory nejsou vymezené, mají vliv na všechny stavy relací v relaci.

Další informace o typech souborů najdete v tématu about_Format.ps1xml

Například při importu tohoto modulu PowerShell načte formáty zadané v Example.ps1xml souboru ze Formats složky umístěné ve stejném adresáři jako manifest modulu.

@{
    FormatsToProcess = @(
        'Formats\Example.ps1xml'
    )
}

NestedModules

Toto nastavení určuje moduly skriptu (.psm1) a binární moduly (.dll), které se importují do stavu relace modulu. Můžete také zadat soubory skriptu (.ps1). Soubory v tomto nastavení se spustí v pořadí, v jakém jsou uvedeny.

Hodnota
Typ vstupu System.String[], System.Collections.Hashtable[]
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. No

Položkami pro toto nastavení mohou být název modulu, úplná specifikace modulu nebo cesta k souboru modulu nebo skriptu.

Pokud je hodnota cesta, může být cesta plně kvalifikovaná nebo relativní.

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

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

  • ModuleName - Povinný: 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íčů. Klíč RequiredVersion nelze použít s klíči ani MaximumVersion s klíčiModuleVersion. Přijatelný rozsah verzí pro modul můžete definovat tak ModuleVersion , že zadáte klíče a MaximumVersion klíče společně.
    • ModuleVersion – Určuje minimální přijatelnou verzi modulu.
    • RequiredVersion – Určuje přesnou požadovanou verzi modulu.
    • MaximumVersion – Určuje maximální přijatelnou verzi modulu.

Poznámka:

RequiredVersion byl přidán ve Windows PowerShellu 5.0. MaximumVersion byl přidán ve Windows PowerShellu 5.1.

Všechny položky, které je potřeba exportovat z vnořeného modulu, musí být exportovány vnořeným modulem pomocí rutiny Export-ModuleMember nebo musí být uvedené v některé z vlastností exportu:

  • FunctionsToExport
  • RutinyToExport
  • VariablesToExport
  • AliasesToExport

Vnořené moduly ve stavu relace modulu jsou k dispozici kořenovému modulu, ale nevrací Get-Module je příkaz ve stavu relace volajícího.

Skripty (.ps1) uvedené v tomto nastavení se spouští ve stavu relace modulu, ne ve stavu relace volajícího. Pokud chcete spustit skript ve stavu relace volajícího, vypište název souboru skriptu v nastavení ScriptsToProcess .

Například při importu tohoto manifestu Helpers.psm1 se modul načte do stavu relace kořenového modulu. Všechny rutiny deklarované v vnořeném modulu se exportují, pokud není omezeno jinak.

@{
    NestedModules = @(
        'Helpers\Helpers.psm1'
    )
}

FunctionsToExport

Toto nastavení určuje funkce, které modul exportuje. Pomocí tohoto nastavení můžete omezit funkce, které modul exportuje. Může odebrat funkce ze seznamu exportovaných funkcí, ale nemůže do seznamu přidávat funkce.

Hodnota
Typ vstupu System.String[]
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. Ano

V tomto nastavení můžete zadat položky pomocí zástupných znaků. Exportují se všechny odpovídající funkce v seznamu exportovaných funkcí.

Tip

Pro zajištění výkonu a zjistitelnosti byste měli vždy explicitně vypsat funkce, které má modul exportovat v tomto nastavení bez použití zástupných znaků.

Když například importujete modul s zakomentovaným nastavením, exportují se všechny funkce v kořenovém modulu a všechny vnořené moduly.

@{
    # FunctionsToExport = @()
}

Tento manifest je funkčně shodný s tím, že vůbec nezadává nastavení.

@{
    FunctionsToExport = '*'
}

Pokud je funkce FunctionsToExport nastavená jako prázdné pole, při importu tohoto modulu nejsou k dispozici žádné funkce, které kořenový modul ani export vnořené moduly nejsou k dispozici.

@{
    FunctionsToExport = @()
}

Poznámka:

Pokud vytvoříte manifest modulu pomocí New-ModuleManifest příkazu a nezadáte parametr FunctionsToExport , má vytvořený manifest toto nastavení určené jako prázdné pole. Pokud manifest neupravíte, nebudou exportovány žádné funkce z modulu.

Pokud je funkce FunctionsToExport nastavená tak, aby zahrnovala Get-Example pouze funkci, při importu Get-Example tohoto modulu je dostupná pouze funkce, i když byly ostatní funkce exportovány kořenovým modulem nebo libovolnými vnořenými moduly.

@{
    FunctionsToExport = @(
        'Get-Example'
    )
}

Pokud je funkce FunctionsToExport nastavená se zástupným řetězcem, při importu tohoto modulu se zpřístupní jakákoli funkce, jejíž název končí Example , i když byly ostatní funkce exportovány jako členy modulu kořenovým modulem nebo libovolnými vnořenými moduly.

@{
    FunctionsToExport = @(
        '*Example'
    )
}

RutinyToExport

Toto nastavení určuje rutiny, které modul exportuje. Pomocí tohoto nastavení můžete omezit rutiny, které modul exportuje. Může odebrat rutiny ze seznamu exportovaných členů modulu, ale nemůže do seznamu přidávat rutiny.

Hodnota
Typ vstupu System.String[]
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. Ano

V tomto nastavení můžete zadat položky pomocí zástupných znaků. Exportují se všechny odpovídající rutiny v seznamu exportovaných rutin.

Tip

Pro zajištění výkonu a zjistitelnosti byste měli vždy explicitně vypsat rutiny, které má modul exportovat v tomto nastavení bez použití zástupných znaků.

Když například importujete modul s tímto nastavením zakomentovanými, exportují se všechny rutiny v kořenovém modulu a všechny vnořené moduly.

@{
    # CmdletsToExport = @()
}

Tento manifest je funkčně shodný s tím, že vůbec nezadává nastavení.

@{
    CmdletsToExport = '*'
}

Když rutinyToExport nastavíte jako prázdné pole, nebudou při importu tohoto modulu k dispozici žádné rutiny, které kořenový modul ani export vnořené moduly nejsou k dispozici.

@{
    CmdletsToExport = @()
}

Poznámka:

Pokud vytvoříte manifest modulu pomocí New-ModuleManifest příkazu a nezadáte parametr CmdletsToExport , vytvoří se v manifestu toto nastavení zadané jako prázdné pole. Pokud manifest neupravíte, nevyexportují se žádné rutiny z modulu.

Pokud je rutina RutinyToExport nastavená tak, aby zahrnovala pouze tuto rutinu Get-Example , je při importu Get-Example tohoto modulu k dispozici pouze rutina, i když byly vyexportovány jinými rutinami kořenovým modulem nebo všemi vnořenými moduly.

@{
    CmdletsToExport = @(
        'Get-Example'
    )
}

Když nastavíte rutiny RutinsToExport s řetězcem se zástupným znakem, při importu tohoto modulu se zpřístupní jakákoli rutina, jejíž název končí Example , i když byly ostatní rutiny exportovány jako členy modulu kořenovým modulem nebo všemi vnořenými moduly.

@{
    CmdletsToExport = @(
        '*Example'
    )
}

VariablesToExport

Toto nastavení určuje proměnné, které modul exportuje. Pomocí tohoto nastavení můžete omezit proměnné, které modul exportuje. Může odebrat proměnné ze seznamu exportovaných členů modulu, ale nemůže do seznamu přidávat proměnné.

Hodnota
Typ vstupu System.String[]
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. Ano

V tomto nastavení můžete zadat položky pomocí zástupných znaků. Exportují se všechny odpovídající proměnné v seznamu exportovaných členů modulu.

Tip

Pro zajištění výkonu a zjistitelnosti byste měli vždy explicitně vypsat proměnné, které má modul exportovat v tomto nastavení bez použití zástupných znaků.

Když například importujete modul s tímto nastavením zakomentovanými, exportují se všechny proměnné v kořenovém modulu a všechny vnořené moduly.

@{
    # VariablesToExport = @()
}

Tento manifest je funkčně shodný s tím, že vůbec nezadává nastavení.

@{
    VariablesToExport = '*'
}

Poznámka:

Pokud vytvoříte manifest modulu pomocí New-ModuleManifest příkazu a nezadáte parametr VariablesToExport , má vytvořený manifest toto nastavení zadané jako '*'. Pokud manifest nepravíte, exportují se všechny proměnné z modulu.

Když nastavíte proměnnou VariablesToExport jako prázdné pole, nebudou při importu tohoto modulu k dispozici žádné proměnné kořenového modulu ani export vnořených modulů.

@{
    VariablesToExport = @()
}

Pokud je proměnná VariablesToExport nastavená tak, aby zahrnovala SomeExample pouze proměnnou, je při importu tohoto modulu k dispozici pouze $SomeExample proměnná, i když byly exportovány jinými proměnnými kořenovým modulem nebo libovolnými vnořenými moduly.

@{
    VariablesToExport = @(
        'SomeExample'
    )
}

Při nastavení VariablesToExport s řetězcem se zástupným znakem při importu tohoto modulu se zpřístupní jakákoli proměnná, jejíž název končí Example , i když byly ostatní proměnné exportovány jako členy modulu kořenovým modulem nebo libovolnými vnořenými moduly.

@{
    VariablesToExport = @(
        '*Example'
    )
}

DscResourcesToExport

Toto nastavení určuje prostředky DSC, které modul exportuje. Pomocí tohoto nastavení můžete omezit prostředky DSC založené na třídách, které modul exportuje. Může odebrat prostředky DSC ze seznamu exportovaných členů modulu, ale nemůže do seznamu přidat prostředky DSC.

Hodnota
Typ vstupu System.String[]
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. Ano

V tomto nastavení můžete zadat položky pomocí zástupných znaků. Exportují se všechny odpovídající prostředky DSC založené na třídách v modulu.

Tip

Pro zjistitelnost byste měli vždy explicitně vypsat všechny prostředky DSC, které modul exportuje.

Další informace o vytváření a používání prostředků DSC najdete v dokumentaci k DSC.

Tento manifest exportuje všechny prostředky DSC založené na třídě a MOF definované v kořenovém modulu a všechny vnořené moduly.

@{
    # DscResourcesToExport = @()
}

Tento manifest exportuje všechny prostředky DSC založené na MOF definované v kořenovém modulu a všechny vnořené moduly, ale pouze jeden prostředek DSC založený na třídě, ExampleClassResource.

@{
    DscResourcesToExport = @(
        'ExampleClassResource'
    )
}

Tento manifest exportuje všechny prostředky DSC, které zahrnuje. I když nebyl uvedený prostředek založený na MOF, modul by ho přesto exportoval.

@{
    DscResourcesToExport = @(
        'ExampleClassResource'
        'ExampleMofResourceFirst'
    )
}

ModuleList

Toto nastavení je informační seznam modulů zahrnutých v tomto modulu. Tento seznam nemá vliv na chování modulu.

Hodnota
Typ vstupu System.String[], System.Collections.Hashtable[]
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. No

Položkami pro toto nastavení mohou být název modulu, úplná specifikace modulu nebo cesta k souboru modulu nebo skriptu.

Pokud je hodnota cesta, může být cesta plně kvalifikovaná nebo relativní.

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

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

  • ModuleName - Povinný: 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íčů. Klíč RequiredVersion nelze použít s klíči ani MaximumVersion s klíčiModuleVersion. Přijatelný rozsah verzí pro modul můžete definovat tak ModuleVersion , že zadáte klíče a MaximumVersion klíče společně.
    • ModuleVersion – Určuje minimální přijatelnou verzi modulu.
    • RequiredVersion – Určuje přesnou požadovanou verzi modulu.
    • MaximumVersion – Určuje maximální přijatelnou verzi modulu.

Poznámka:

RequiredVersion byl přidán ve Windows PowerShellu 5.0. MaximumVersion byl přidán ve Windows PowerShellu 5.1.

Tento manifest neposkytuje informační seznam modulů, které obsahuje. Může nebo nemusí obsahovat moduly. I když toto nastavení není zadané, všechny moduly uvedené v nastavení RootModule, ScriptsToProcess nebo NestedModules se stále chovají normálně.

@{
    # ModuleList = @()
}

Tento manifest deklaruje, že jediné moduly, které obsahuje, jsou Example.psm1 a dílčí moduly First.psm1 a Second.psm1 ve Submodules složce.

@{
    ModuleList = @(
        'Example.psm1'
        'Submodules\First.psm1'
        'Submodules\Second.psm1'
    )
}

Filelist

Toto nastavení je informační seznam souborů zahrnutých v tomto modulu. Tento seznam nemá vliv na chování modulu.

Hodnota
Typ vstupu System.String[]
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. Ano

Položky pro toto nastavení by měly být relativní cestou k souboru ze složky obsahující manifest modulu.

Když uživatel volá Get-Module manifest s tímto nastavením definovaným, vlastnost FileList obsahuje úplnou cestu k těmto souborům a spojuje cestu modulu s relativní cestou každé položky.

Tento manifest neobsahuje seznam svých souborů.

@{
    # FileList = @()
}

Tento manifest deklaruje, že v tomto nastavení jsou uvedeny pouze soubory, které obsahuje.

@{
    FileList = @(
        'Example.psd1'
        'Example.psm1'
        'Assemblies\Example.dll'
        'Scripts\Initialize.ps1'
        'Submodules\First.psm1'
        'Submodules\Second.psm1'
    )
}

PrivateData

Toto nastavení definuje tabulku hash dat, která jsou k dispozici pro všechny příkazy nebo funkce v oboru kořenového modulu.

Hodnota
Typ vstupu System.Collections.Hashtable
Povinní účastníci Galerie prostředí PowerShell, Crescendo
Hodnota, pokud neníset $null
Přijímá zástupné kóty. No

Při exportu manifestu Crescendo pro vytvoření nového modulu Export-CrescendoModule přidá dva klíče do PrivateData.

  • CrescendoGenerated – časové razítko při exportu modulu
  • CrescendoVersion – verze Crescendo použitá k exportu modulu

Můžete přidat vlastní klíče pro ukládání metadat, která chcete sledovat. Všechny klíče přidané do tohoto nastavení jsou k dispozici pro funkce a rutiny v kořenovém modulu pomocí $MyInvocation.MyCommand.Module.PrivateData. Tabulka hash není k dispozici v samotném oboru modulu, pouze v rutinách, které definujete v modulu.

Tento manifest například definuje klíč PublishedDate v PrivateData.

@{
    PrivateData = @{
        PublishedDate = '2022-06-01'
    }
}

Rutiny v modulu mají přístup k této hodnotě $MyInvocation pomocí proměnné.

Function Get-Stale {
    [CmdletBinding()]
    param()

    $PublishedDate = $MyInvocation.MyCommand.Module.PrivateData.PublishedDate
    $CurrentDate = Get-Date

    try {
        $PublishedDate = Get-Date -Date $PublishedDate -ErrorAction Stop
    } catch {
        # The date was set in the manifest, set to an invalid value, or
        # the script module was directly imported without the manifest.
        Throw "Unable to determine published date. Check the module manifest."
    }

    if ($CurrentDate -gt $PublishedDate.AddDays(30)) {
        Write-Warning "This module version was published more than 30 days ago."
    } else {
        $TimeUntilStale = $PublishedDate.AddDays(30) - $CurrentDate
        "This module will be stale in $($TimeUntilStale.Days) days"
    }
}

Po importu modulu použije funkce hodnotu z PrivateData k určení, kdy byl modul publikován.

Get-Stale -TestDate '2022-06-15'
Get-Stale -TestDate '2022-08-01'
This module will be stale in 16 days

WARNING: This module version was published more than 30 days ago.

PrivateData.PSData

Podřízená vlastnost PSData definuje tabulku hodnot hash, které podporují konkrétní scénáře rozšíření.

Hodnota
Typ vstupu System.Collections.Hashtable
Povinní účastníci Galerie prostředí PowerShell, experimentální funkce, moduly Crescendo
Hodnota, pokud neníset $null
Přijímá zástupné kóty. No

Podřízená vlastnost PSData se používá pro následující scénáře:

  • Galerie prostředí PowerShell – Při vytváření manifestu modulu pomocí New-ModuleManifest rutiny předem naplní hashtable PSData klíči držitele místa, které jsou potřeba při publikování modulu do Galerie prostředí PowerShell. Další informace o manifestech modulů a publikování do Galerie prostředí PowerShell najdete v tématu Hodnoty manifestu balíčku, které mají vliv na uživatelské rozhraní Galerie prostředí PowerShell.
  • Experimentální funkce – Metadata o experimentální funkci se uchovávají ve vlastnosti ExperimentalFeatures psData. ExperimentálníFeatures vlastnost je pole hashtables obsahující název a popis funkce. Další informace naleznete v tématu deklarování experimentálních funkcí v modulech.
  • Moduly Crescendo – Při exportu manifestu Crescendo pro vytvoření nového modulu Export-CrescendoModule přidá hodnotu CrescendoBuilt do vlastnosti PSData.Tags . Tuto značku můžete použít k vyhledání modulů v Galerie prostředí PowerShell, které byly vytvořeny pomocí Crescendo. Další informace naleznete v tématu Export-CrescendoModule.

HelpInfoURI

Toto nastavení určuje internetovou adresu souboru HelpInfo XML modulu.

Hodnota
Typ vstupu System.String
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. No

Hodnota tohoto nastavení musí být identifikátor URI (Uniform Resource Identifier), který začíná http nebo https.

Soubor HelpInfo XML podporuje funkci Aktualizovatelná nápověda, která byla zavedena v PowerShellu 3.0. Obsahuje informace o umístění souborů nápovědy ke stažení pro modul a čísla verzí nejnovějších souborů nápovědy pro každé podporované národní prostředí.

Informace o aktualizovatelné nápovědě najdete v tématu about_Updatable_Help. Informace o souboru HelpInfo XML naleznete v tématu Podpora aktualizovatelné nápovědy.

Tento modul například podporuje aktualizovatelnou nápovědu.

@{
    HelpInfoUri = 'http://https://go.microsoft.com/fwlink/?LinkID=603'
}

DefaultCommandPrefix

Toto nastavení určuje předponu před podstatnými jménem všech příkazů v modulu při jejich importu do relace. Předpony pomáhají zabránit konfliktům názvů příkazů v relaci uživatele.

Hodnota
Typ vstupu System.String
Povinní účastníci No
Hodnota, pokud neníset $null
Přijímá zástupné kóty. No

Uživatelé modulu mohou tuto předponu přepsat zadáním parametru Prefix rutiny Import-Module .

Toto nastavení bylo zavedeno v PowerShellu 3.0.

Při importu tohoto manifestu se Example všechny rutiny importované z tohoto modulu předefinovaly na podstatné jméno ve svém názvu. Například Get-Item se importuje jako Get-ExampleItem.

@{
    DefaultCommandPrefix = 'Example'
}

Viz také