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 nutné k načtení modulu, ale vyžadují se k publikování modulu do PowerShell Gallerysouboru . 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 = ''
        # ExternalModuleDependencies = @()
    } # End of PSData hashtable
} # End of PrivateData hashtable
# HelpInfoURI = ''
# DefaultCommandPrefix = ''
}

Před publikováním modulu můžete pomocí Test-ModuleManifest ověřit manifest modulu. Test-ModuleManifest vrátí chybu, pokud je manifest neplatný nebo modul nejde 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 jazykovém režimu. Restricted režim omezuje příkazy a proměnné, které je možné 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 naleznete 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é: Pokud je tato hodnota Ano, je nastavení nutné k importu modulu i k jeho publikování do PowerShell Gallerysouboru . Pokud je "Ne", vyžaduje se to pro žádné. Je-li to PowerShell Gallery, je vyžadován pouze pro publikování do souboru PowerShell Gallery.
  • Hodnota, pokud není nastavena: Hodnota, kterou má toto nastavení při importu a není explicitně nastaveno.
  • přijímá zástupné volby: 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
vstupní typ System.String
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné Ne

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)
  • a Windows PowerShell 5.1 Workflow (.xaml)

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

Pokud manifest modulu nemá v klíči RootMod ule žá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 se určuje z použité přípony souboru:

  • soubor .ps1 nebo .psm1 vytvoří typ modulu Script
  • soubor .psd1 vytvoří typ modulu Manifest
  • soubor .dll vytvoří typ modulu Binary
  • soubor .cdxml vytvoří typ modulu CIM
  • soubor .xaml vytvoří typ modulu pracovního postupu

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

Spropitné

Rychlost načítání modulů se liší od binárních, skriptůa CIM typů modulů. Další informace najdete v tématu aspekty vytváření modulů PowerShellu

Například ModuleType tohoto modulu je manifestu. Jedinými členy modulu, které tento modul může exportovat, jsou ty, které jsou definovány v modulech zadaných pomocí nastavení 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
vstupní typ System.String
povinné Ano
Hodnota, pokud nenasadíte Žádný
přijímá zástupné Ne

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

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

@{
    ModuleVersion = '1.2.3'
}

Při importu modulu a kontrole verze vlastnost, všimněte si, že se jedná o objekt System.Version a 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
vstupní typ System.String[]
akceptované hodnoty Desktop, Core
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné Ne

Pokud je hodnota tohoto nastavení $null, 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é je do nastavení zahrnuta hodnota $PSEdition automatické proměnné.

Poznámka

Vzhledem k tomu, že $PSEdition 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 = @()
}

Při zadaném nastavení je možné tento modul importovat pouze v relacích, ve kterých je hodnota $PSEdition automatické proměnné Core.

@{
    CompatiblePSEditions = @('Core')
}

GUID

Toto nastavení určuje jedinečný identifikátor modulu. Identifikátor GUID se používá k rozlišení modulů se stejným názvem.

Hodnota
vstupní typ System.String
povinné Ne
Hodnota, pokud nenasadíte 00000000-0000-0000-0000-000000000000
přijímá zástupné Ne

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

Opatrnost

I když se nejedná o požadované nastavení, nezadávejte GUID v manifestu žá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'
}

Author

Toto nastavení identifikuje autora modulu.

Hodnota
vstupní typ System.String
povinné PowerShell Gallery
Hodnota, pokud nenasadíte $null
přijímá zástupné Ne

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

@{
    Author = 'Contoso Developer Experience Team'
}

Název společnosti

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

Hodnota
vstupní typ System.String
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné Ne

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
vstupní typ System.String
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné Ne

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.'
}

Description

Toto nastavení popisuje modul na vysoké úrovni.

Hodnota
vstupní typ System.String
povinné PowerShell Gallery
Hodnota, pokud nenasadíte $null
přijímá zástupné Ne

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
vstupní typ System.String
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné Ne

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

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 = ''
}

S PowerShellVersion nastaveným na 7.2můžete modul importovat jenom 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 hostitele prostředí Windows PowerShell ISE nebo ConsoleHost.

Hodnota
vstupní typ System.String
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné Ne

Název hostitele pro relaci najdete pomocí příkazu $Host.Name. 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 = ''
}

S PowerShellHostName nastaveným na ServerRemoteHostmůžete modul importovat pouze ve vzdálené relaci PowerShellu.

@{
    PowerShellHostName = 'ServerRemoteHost'
}

PowerShellHostVersion

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

Hodnota
vstupní typ System.String
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné Ne

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

Opatrnost

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 nastavení PowerShellHostName.

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

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

S PowerShellHostVersion nastaveným na 5.1můžete modul importovat jenom z jakékoli 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
vstupní typ System.String
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné Ne

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í System.Versionkonvertibilní na Import-Module .

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 nastaveným na 4.0můžete tento modul importovat 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
vstupní typ System.String
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné Ne

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í System.Versionkonvertibilní na Import-Module .

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 nastavená na 4.0, můžete tento modul importovat v libovolné relaci Windows PowerShellu, kde je nejnovější dostupná verze MODULU CLR 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
vstupní typ System.String
akceptované hodnoty None, MSIL, X86, IA64, , Amd64Arm
povinné Ne
Hodnota, pokud nenasadíte None
přijímá zástupné Ne

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

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

@{
    # ProcessorArchitecture = ''
}

S ProcessorArchitecture nastavenou na Amd64můžete tento modul importovat pouze 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é, příkaz Import-Module selže.

Hodnota
vstupní typ System.String[], System.Collections.Hashtable[]
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné Ne

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 prohledá PSModulePath zadaného modulu.

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

  • ModuleName - Požadované. Určuje název modulu.
  • GUID - volitelné. Určuje identifikátor GUID modulu.
  • Je také Povinné zadat aspoň jeden z následujících tří klíčů. Klíč RequiredVersion nelze použít s klíči ModuleVersion nebo MaximumVersion. Přijatelný rozsah verzí pro modul můžete definovat zadáním ModuleVersion a MaximumVersion klíčů.
    • 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 byla přidána ve Windows PowerShellu 5.0. MaximumVersion byl přidán v prostředí Windows PowerShell 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ž v tomto manifestu spustíte Import-Module, PowerShell naimportuje nejnovější verzi psReadLine, která je k dispozici pro relaci. Pokud není k dispozici žádná verze, import vrátí chybu.

@{
    RequiredModules = @(
        'PSReadLine'
    )
}

Spropitné

V PowerShellu 2.0 Import-Module nenaimportuje požadované moduly 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ž v tomto manifestu spustíte Import-Module, 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ž v tomto manifestu spustíte Import-Module, 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ě RootModule klíč.

Hodnota
vstupní typ System.String[]
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné Ne

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 uvedená také jako binární moduly v nastavení NestedModules.

Tento manifest vyžaduje sestavení example.dll. Před načtením jakéhokoli formátování nebo typů souborů zadaných v tomto manifestu PowerShell načte example.dll ze složky Assemblies 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
vstupní typ System.String[]
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné Ne

Pokud chcete zadat skripty, které se spustí ve stavu relace modulu, použijte klíč NestedModules klíč.

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

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

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

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 nastaví $ExampleState ve vaší 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 soubory typu (.ps1xml), které se spustí při importu modulu.

Hodnota
vstupní typ System.String[]
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné Ne

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 souboru Example.ps1xml ze složky Types umístěné ve stejném adresáři jako manifest modulu.

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

FormatsToProcess

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

Hodnota
vstupní typ System.String[]
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné Ne

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 souboru Example.ps1xml ze složky Formats 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
vstupní typ System.String[], System.Collections.Hashtable[]
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné Ne

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ého modulu.

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

  • ModuleName - Požadované. Určuje název modulu.
  • GUID - volitelné. Určuje identifikátor GUID modulu.
  • Je také Povinné zadat aspoň jeden z následujících tří klíčů. Klíč RequiredVersion nelze použít s klíči ModuleVersion nebo MaximumVersion. Přijatelný rozsah verzí pro modul můžete definovat zadáním ModuleVersion a MaximumVersion klíčů.
    • 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 byla přidána ve Windows PowerShellu 5.0. MaximumVersion byl přidán v prostředí Windows PowerShell 5.1.

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

  • FunctionsToExport
  • rutiny ToExport
  • VariablesToExport
  • AliasesToExport

Vnořené moduly ve stavu relace modulu jsou k dispozici kořenovému modulu, ale nevrátí se příkazem Get-Module ve stavu relace volajícího.

Skripty (.ps1), které jsou 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 skriptu v nastavení ScriptsToProcess.

Například při importu tohoto manifestu se modul Helpers.psm1 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
vstupní typ System.String[]
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné 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í.

Spropitné

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 = '*'
}

Když FunctionsToExport nastavenou jako prázdné pole, nebudou při importu tohoto modulu k dispozici žádné funkce, které kořenový modul ani export vnořených modulů nejsou k dispozici.

@{
    FunctionsToExport = @()
}

Poznámka

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

Když FunctionsToExport nastavená tak, aby zahrnovala pouze funkci Get-Example, je při importu tohoto modulu k dispozici pouze funkce Get-Example, a to i v případě, že byly ostatní funkce exportovány kořenovým modulem nebo vnořenými moduly.

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

Když FunctionsToExport nastaven s řetězcem se zástupnými znaky, 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
vstupní typ System.String[]
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné 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.

Spropitné

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 nastavenou jako prázdné pole, nebudou při importu tohoto modulu k dispozici žádné rutiny kořenového modulu ani export vnořených modulů.

@{
    CmdletsToExport = @()
}

Poznámka

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

Pokud RutinyToExport nastavená tak, aby zahrnovala pouze rutinu Get-Example, je při importu tohoto modulu k dispozici pouze rutina Get-Example, i když byly ostatní rutiny exportovány kořenovým modulem nebo libovolnými vnořenými moduly.

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

Při použití rutin RutinyToExport nastaven s řetězcem se zástupnými znaky při importu tohoto modulu do libovolné rutiny, jejíž název končí Example je dostupný, i když byly ostatní rutiny exportovány jako členy modulu kořenovým modulem nebo libovolnými 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
vstupní typ System.String[]
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné 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.

Spropitné

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í příkazu New-ModuleManifest 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ž VariablesToExport nastavenou 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 = @()
}

Když VariablesToExport nastavena tak, aby zahrnovala pouze SomeExample proměnnou, při importu tohoto modulu je k dispozici pouze $SomeExample proměnná, i když byly vyexportovány jinými proměnnými kořenovým modulem nebo všemi vnořenými moduly.

@{
    VariablesToExport = @(
        'SomeExample'
    )
}

Když VariablesToExport nastaven s řetězcem se zástupnými znaky, 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
vstupní typ System.String[]
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné 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.

Spropitné

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ž prostředek MOF-Based nebyl uvedený, modul by ho i nadále 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
vstupní typ System.String[], System.Collections.Hashtable[]
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné Ne

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ého modulu.

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

  • ModuleName - Požadované. Určuje název modulu.
  • GUID - volitelné. Určuje identifikátor GUID modulu.
  • Je také Povinné zadat aspoň jeden z následujících tří klíčů. Klíč RequiredVersion nelze použít s klíči ModuleVersion nebo MaximumVersion. Přijatelný rozsah verzí pro modul můžete definovat zadáním ModuleVersion a MaximumVersion klíčů.
    • 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 byla přidána ve Windows PowerShellu 5.0. MaximumVersion byl přidán v prostředí Windows PowerShell 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 RootModule, ScriptsToProcessnebo Nastavení vnořených modulů se stále chovají normálně.

@{
    # ModuleList = @()
}

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

@{
    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
vstupní typ System.String[]
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné 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 proti manifestu 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
vstupní typ System.Collections.Hashtable
povinné PowerShell GalleryCrescendo
Hodnota, pokud nenasadíte $null
přijímá zástupné Ne

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 dostupné 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ě pomocí proměnné $MyInvocation.

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
vstupní typ System.Collections.Hashtable
povinné PowerShell Gallery, experimentální funkce, moduly Crescendo
Hodnota, pokud nenasadíte $null
přijímá zástupné Ne

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

  • PowerShell Gallery - Při vytváření manifestu modulu pomocí New-ModuleManifest rutiny předem naplní hashtable PSData zástupnými klíči potřebnými při publikování modulu do objektu PowerShell Gallery. Další informace o manifestech modulů a publikování do galerie Prostředí PowerShell najdete v tématu Hodnoty manifestu PowerShell Gallery balíčku, které ovlivňují uživatelské rozhraní.
  • Experimentální funkce – Metadata o experimentální funkci se uchovávají v ExperimentálníFeatures vlastnost PSData. ExperimentalFeatures 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 hodnotu CrescendoBuilt do vlastnosti PSData.Tags. Tuto značku můžete použít k vyhledání modulů vytvořených PowerShell Gallery pomocí Crescendo. Další informace naleznete v tématu Export-CrescendoModule.
  • Vlastnost PSData.ExternalModuleDependencies je pole názvů modulů, které jsou závislostmi pro tento modul. Tato vlastnost je pouze informativní a nemá vliv na instalaci nebo načítání modulu.

HelpInfoURI

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

Hodnota
vstupní typ System.String
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné Ne

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ě naleznete 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
vstupní typ System.String
povinné Ne
Hodnota, pokud nenasadíte $null
přijímá zástupné Ne

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 všechny rutiny importované z tohoto modulu Example před podstatným jménem. Například Get-Item se naimportuje jako Get-ExampleItem.

@{
    DefaultCommandPrefix = 'Example'
}

Viz také