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-Module
se 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
Yes
tato hodnota, je nastavení nutné k importu modulu i k jeho publikování do Galerie prostředí PowerShell. Pokud anoNo
, 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-Module
se 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-Module
konvertibilní 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 $null
hodnota 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 Core
hodnota 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-Module
konvertibilní 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.'
}
Autorské právo
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-Module
konvertibilní 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-Module
konvertibilní 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-Module
konvertibilní 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-Module
konvertibilní 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 , , Amd64 Arm |
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-Module
konvertibilní 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 aniMaximumVersion
s klíčiModuleVersion
. Přijatelný rozsah verzí pro modul můžete definovat takModuleVersion
, že zadáte klíče aMaximumVersion
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 aniMaximumVersion
s klíčiModuleVersion
. Přijatelný rozsah verzí pro modul můžete definovat takModuleVersion
, že zadáte klíče aMaximumVersion
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 aniMaximumVersion
s klíčiModuleVersion
. Přijatelný rozsah verzí pro modul můžete definovat takModuleVersion
, že zadáte klíče aMaximumVersion
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á hodnotuCrescendoBuilt
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'
}