about_Module_Manifests
Kort beskrivning
Beskriver inställningarna och metoderna för att skriva modulmanifestfiler.
Lång beskrivning
Ett modulmanifest är en PowerShell-datafil (.psd1
) som innehåller en hash-tabell.
Nyckel/värde-paren i hash-tabellen beskriver innehållet och attributen i modulen, definierar förutsättningarna och styr hur komponenterna bearbetas.
Manifest krävs inte för att läsa in en modul, men de krävs för att publicera en modul i PowerShell-galleriet. Med manifest kan du också skilja modulens implementering från hur den läses in. Med ett manifest kan du definiera krav, kompatibilitet, inläsningsordning med mera.
När du använder New-ModuleManifest
utan att ange några parametrar för manifestets inställningar skrivs en minimal manifestfil. Kodfragmentet nedan visar den här standardutdatan, snipped av kommentarer och avstånd för korthet:
@{
# 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 = ''
}
Du kan använda Test-ModuleManifest
för att verifiera ett modulmanifest innan du publicerar modulen.
Test-ModuleManifest
returnerar ett fel om manifestet är ogiltigt eller om modulen inte kan importeras till den aktuella sessionen eftersom sessionen inte uppfyller kraven i manifestet.
Använda skriptkod i ett modulmanifest
De värden som tilldelats inställningarna i manifestfilen kan vara uttryck som utvärderas av PowerShell. På så sätt kan du skapa sökvägar och villkorligt tilldela värden baserat på variabler.
När du importerar en modul med utvärderas Import-Module
manifestet i Restricted
språkläge.
Restricted
-läget begränsar de kommandon och variabler som kan användas.
Tillåtna kommandon
Import-LocalizedData
ConvertFrom-StringData
Write-Host
Out-Host
Join-Path
Tillåtna variabler
$PSScriptRoot
$PSEdition
$EnabledExperimentalFeatures
- Alla miljövariabler, till exempel
$ENV:TEMP
Mer information finns i about_Language_Modes.
Manifestinställningar
I följande avsnitt beskrivs alla tillgängliga inställningar i ett modulmanifest och hur du kan använda dem. De börjar med en sammanfattning av inställningen och följs av en matris som visar:
- Indatatyp: Den objekttyp som du kan ange för den här inställningen i manifestet.
-
Obligatoriskt: Om det här värdet är
Yes
krävs inställningen både för att importera modulen och publicera den till PowerShell-galleriet. Om det ärNo
, krävs det inte för någotdera. Om det ärPowerShell Gallery
krävs det bara för publicering till PowerShell-galleriet. - Värde om det tas bort: Värdet som den här inställningen har när den importeras och inte uttryckligen anges.
- Accepterar jokertecken: Om den här inställningen kan ta ett jokerteckenvärde eller inte.
RootModule
Den här inställningen anger modulens primära fil eller rotfil. När modulen importeras importeras de medlemmar som exporteras av rotmodulfilen till anroparens sessionstillstånd.
Värde | |
---|---|
Indatatyp | System.String |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Nej |
Värdet måste vara sökvägen till något av följande:
- ett skript (
.ps1
) - en skriptmodul (
.psm1
) - ett modulmanifest (
.psd1
) - en sammansättning (
.dll
) - en XML-fil för cmdlet-definition (
.cdxml
) - ett Windows PowerShell 5.1-arbetsflöde (
.xaml
)
Sökvägen ska vara relativ till modulmanifestet.
Om ett modulmanifest inte har någon rotfil har angetts i RootModule-nyckeln blir manifestet den primära filen för modulen och modulen blir en manifestmodul (ModuleType = Manifest). När RootModule har definierats bestäms modulens typ från filtillägget som används:
- a
.ps1
eller.psm1
fil gör modultypen Skript - en
.psd1
fil gör modultypen Manifest - en
.dll
fil gör modultypen Binär - en
.cdxml
fil gör modultypen CIM - en
.xaml
fil gör modultypen Arbetsflöde
Som standard exporteras alla modulmedlemmar i RootModule .
Dricks
Modulinläsningshastigheten skiljer sig mellan modultyperna Binär, Skript och CIM . Mer information finns i PowerShell-modulredigeringsöverväganden
Den här modulens ModuleType är till exempel Manifest. De enda modulmedlemmar som den här modulen kan exportera är de som definieras i de moduler som anges med inställningen NestedModules .
@{
RootModule = ''
}
Kommentar
Den här inställningen kan också anges i modulmanifest som ModuleToProcess. Även om det namnet för den här inställningen är giltigt är det bästa praxis att använda RootModule i stället.
ModuleVersion
Den här inställningen anger versionen av modulen. När det finns flera versioner av en modul i ett system läses den senaste versionen in som standard när du kör Import-Module
.
Värde | |
---|---|
Indatatyp | System.String |
Krävs | Ja |
Värde om det tas bort | Ingen |
Accepterar jokertecken | Nej |
Värdet för den här inställningen måste konverteras till System.Version
när du kör Import-Module
.
Det här manifestet deklarerar till exempel modulens version som '1.2.3'
.
@{
ModuleVersion = '1.2.3'
}
När du importerar modulen och kontrollerar egenskapen Version bör du tänka på att det är ett System.Version-objekt och inte en sträng:
$ExampleModule = Import-Module example.psd1
$ExampleModule.Version
$ExampleModule.Version.GetType().Name
Major Minor Build Revision
----- ----- ----- --------
1 2 3 -1
Version
CompatiblePSEditions
Den här inställningen anger modulens kompatibla PSEditions.
Värde | |
---|---|
Indatatyp | System.String[] |
Godkända värden |
Desktop , Core |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Nej |
Om värdet för den här inställningen är $null
kan modulen importeras oavsett PSEdition för sessionen. Du kan ange ett eller flera av de godkända värdena.
Information om PSEdition finns i:
När den här inställningen har definierats kan modulen endast importeras till en session där värdet för den $PSEdition
automatiska variabeln ingår i inställningen.
Kommentar
Eftersom den $PSEdition
automatiska variabeln introducerades i version 5.1 kan äldre versioner av Windows PowerShell inte läsa in en modul som använder inställningen CompatiblePSEditions .
Du kan till exempel importera det här modulmanifestet i valfri session:
@{
# CompatiblePSEditions = @()
}
Med den angivna inställningen kan den här modulen endast importeras i sessioner där den $PSEdition
automatiska variabelns värde är Core
.
@{
CompatiblePSEditions = @('Core')
}
GUID
Den här inställningen anger en unik identifierare för modulen. GUID används för att skilja mellan moduler med samma namn.
Värde | |
---|---|
Indatatyp | System.String |
Krävs | Nej |
Värde om det tas bort | 00000000-0000-0000-0000-000000000000 |
Accepterar jokertecken | Nej |
Värdet för den här inställningen måste konverteras till System.Guid
när du kör Import-Module
.
Varning
Det är inte en obligatorisk inställning, men att inte ange ett GUID i ett manifest har inga fördelar och kan leda till namnkollisioner för moduler.
Du kan skapa ett nytt guid som ska användas i manifestet:
New-Guid | Select-Object -ExpandProperty Guid
8456b025-2fa5-4034-ae47-e6305f3917ca
@{
GUID = '8456b025-2fa5-4034-ae47-e6305f3917ca'
}
Om det finns en annan modul på datorn med samma namn kan du fortfarande importera den du vill ha genom att ange modulens fullständigt kvalificerade namn:
Import-Module -FullyQualifiedName @{
ModuleName = 'Example'
GUID = '8456b025-2fa5-4034-ae47-e6305f3917ca'
ModuleVersion = '1.0.0'
}
Författare
Den här inställningen identifierar modulförfattaren.
Värde | |
---|---|
Indatatyp | System.String |
Krävs | PowerShell-galleriet |
Värde om det tas bort | $null |
Accepterar jokertecken | Nej |
Det här manifestet förklarar att modulens författare är Contoso Developer Experience Team.
@{
Author = 'Contoso Developer Experience Team'
}
CompanyName
Den här inställningen identifierar företaget eller leverantören som skapade modulen.
Värde | |
---|---|
Indatatyp | System.String |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Nej |
Det här manifestet deklarerar att modulen skapades av Contoso, Ltd.
@{
CompanyName = 'Contoso, Ltd.'
}
Upphovsrätt
Den här inställningen anger en copyright-instruktion för modulen.
Värde | |
---|---|
Indatatyp | System.String |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Nej |
Detta manifest deklarerar ett upphovsrättsmeddelande som reserverar alla rättigheter till Contoso, Ltd. från och med 2022.
@{
Copyright = '(c) 2022 Contoso, Ltd. All rights reserved.'
}
beskrivning
Den här inställningen beskriver modulen på hög nivå.
Värde | |
---|---|
Indatatyp | System.String |
Krävs | PowerShell-galleriet |
Värde om det tas bort | $null |
Accepterar jokertecken | Nej |
Det här manifestet innehåller en kort beskrivning. Du kan också använda en här-sträng för att skriva en längre eller flerradsbeskrivning.
@{
Description = 'Example commands to show a valid module manifest'
}
PowerShellVersion
Den här inställningen anger den lägsta versionen av PowerShell som krävs för den här modulen.
Värde | |
---|---|
Indatatyp | System.String |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Nej |
Värdet för den här inställningen måste konverteras till System.Version
när du kör Import-Module
.
Om den här inställningen inte har angetts begränsar PowerShell inte modulens import baserat på den aktuella versionen.
Det här manifestet deklarerar till exempel att modulen är kompatibel med alla versioner av PowerShell och Windows PowerShell.
@{
# PowerShellVersion = ''
}
Med PowerShellVersion inställt på 7.2
kan du bara importera modulen i PowerShell 7.2 eller senare.
@{
PowerShellVersion = '7.2'
}
PowerShellHostName
Den här inställningen anger namnet på det PowerShell-värdprogram som modulen kräver, till exempel Windows PowerShell ISE-värd eller ConsoleHost.
Värde | |
---|---|
Indatatyp | System.String |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Nej |
Du hittar namnet på värden för en session med -instruktionen $Host.Name
. Du kan till exempel se att värden för en fjärrsession är ServerRemoteHost i stället för ConsoleHost:
$Host.Name
Enter-PSSession -ComputerName localhost
$Host.Name
ConsoleHost
[localhost]: PS C:\Users\username\Documents> $Host.Name
ServerRemoteHost
Den här modulen kan importeras till valfri värd.
@{
# PowerShellHostName = ''
}
Med PowerShellHostName inställt på ServerRemoteHost
kan du bara importera modulen i en powershell-fjärrsession.
@{
PowerShellHostName = 'ServerRemoteHost'
}
PowerShellHostVersion
Den här inställningen anger den lägsta versionen av ett PowerShell-värdprogram som modulen kräver.
Värde | |
---|---|
Indatatyp | System.String |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Nej |
Värdet för den här inställningen måste konverteras till System.Version
när du kör Import-Module
.
Varning
Även om den här inställningen kan användas utan PowerShellHostName-inställningen ökar oddsen för oväntat beteende. Använd endast den här inställningen när du också använder inställningen PowerShellHostName .
Det här manifestets modul kan till exempel importeras från valfri PowerShell-session som körs i ConsoleHost, oavsett värdens version.
@{
PowerShellHostName = 'ConsoleHost'
# PowerShellHostVersion = ''
}
Med PowerShellHostVersion inställt på 5.1
kan du bara importera modulen från en PowerShell-session som körs i ConsoleHost där värdens version är 5.1 eller senare.
@{
PowerShellHostName = 'ConsoleHost'
PowerShellHostVersion = '5.1'
}
DotNetFrameworkVersion
Den här inställningen anger den lägsta version av Microsoft .NET Framework som modulen kräver.
Värde | |
---|---|
Indatatyp | System.String |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Nej |
Kommentar
Den här inställningen är endast giltig för PowerShell Desktop-versionen, till exempel Windows PowerShell 5.1, och gäller endast för .NET Framework-versioner som är lägre än 4,5. Det här kravet har ingen effekt för nyare versioner av PowerShell eller .NET Framework.
Värdet för den här inställningen måste konverteras till System.Version
när du kör Import-Module
.
Det här manifestet deklarerar till exempel att dess modul kan importeras i valfri PowerShell- eller Windows PowerShell-session, oavsett version av Microsoft .NET Framework.
@{
# DotNetFrameworkVersion = ''
}
Med DotNetFrameworkVersion inställt på 4.0
kan du importera den här modulen i valfri session i Windows PowerShell där den senaste tillgängliga versionen av Microsoft .NET Framework är minst 4.0. Du kan också importera den i valfri PowerShell-session.
@{
DotNetFrameworkVersion = '4.0'
}
CLRVersion
Den här inställningen anger den lägsta versionen av COMMON Language Runtime (CLR) för Microsoft .NET Framework som modulen kräver.
Värde | |
---|---|
Indatatyp | System.String |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Nej |
Kommentar
Den här inställningen är endast giltig för PowerShell Desktop-versionen, till exempel Windows PowerShell 5.1, och gäller endast för .NET Framework-versioner som är lägre än 4,5. Det här kravet har ingen effekt för nyare versioner av PowerShell eller .NET Framework.
Värdet för den här inställningen måste konverteras till System.Version
när du kör Import-Module
.
Det här manifestet deklarerar till exempel att dess modul kan importeras i valfri PowerShell- eller Windows PowerShell-session, oavsett vilken version av Microsoft .NET Frameworks CLR-version som helst.
@{
# CLRVersion = ''
}
Med CLRVersion inställt 4.0
på kan du importera den här modulen i alla sessioner i Windows PowerShell där den senaste tillgängliga versionen av CLR är minst 4.0. Du kan också importera den i valfri PowerShell-session.
@{
CLRVersion = '4.0'
}
ProcessorArchitecture
Den här inställningen anger den processorarkitektur som modulen kräver.
Värde | |
---|---|
Indatatyp | System.String |
Godkända värden |
None , MSIL , X86 , IA64 , , , Amd64 Arm |
Krävs | Nej |
Värde om det tas bort | None |
Accepterar jokertecken | Nej |
Värdet för den här inställningen måste konverteras till System.Reflection.ProcessorArchitecture
när du kör Import-Module
.
Det här manifestet deklarerar till exempel att dess modul kan importeras i valfri session, oavsett systemets processorarkitektur.
@{
# ProcessorArchitecture = ''
}
Med ProcessorArchitecture inställt Amd64
på kan du bara importera den här modulen i en session som körs på en dator med en matchande arkitektur.
@{
ProcessorArchitecture = 'Amd64'
}
RequiredModules
Den här inställningen anger moduler som måste vara i det globala sessionstillståndet. Om de moduler som krävs inte är i det globala sessionstillståndet importerar PowerShell dem.
Om de moduler som krävs inte är tillgängliga misslyckas Import-Module
kommandot.
Värde | |
---|---|
Indatatyp |
System.String[] , System.Collections.Hashtable[] |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Nej |
Poster för den här inställningen kan vara ett modulnamn, en fullständig modulspecifikation eller en sökväg till en modulfil.
När värdet är en sökväg kan sökvägen vara fullständigt kvalificerad eller relativ.
När värdet är ett namn eller en modulspecifikation söker PowerShell i PSModulePath efter den angivna modulen.
En modulspecifikation är en hash-tabell som har följande nycklar.
-
ModuleName
- Obligatoriska. Anger modulnamnet. -
GUID
- Valfritt. Anger GUID för modulen. - Det är också Obligatoriskt att ange minst en av de tre nycklarna nedan. Nyckeln
RequiredVersion
kan inte användas medModuleVersion
nycklarna ellerMaximumVersion
. Du kan definiera ett acceptabelt versionsintervall för modulen genom attModuleVersion
ange nycklarna ochMaximumVersion
tillsammans.-
ModuleVersion
– Anger en lägsta godtagbar version av modulen. -
RequiredVersion
– Anger en exakt, nödvändig version av modulen. -
MaximumVersion
– Anger den maximala godkända versionen av modulen.
-
Kommentar
RequiredVersion
lades till i Windows PowerShell 5.0.
MaximumVersion
lades till i Windows PowerShell 5.1.
Det här manifestet deklarerar till exempel att modulen inte kräver några andra moduler för dess funktioner.
@{
# RequiredModules = @()
}
Det här manifestet deklarerar att det kräver PSReadLine-modulen. När du kör Import-Module
det här manifestet importerar PowerShell den senaste versionen av PSReadLine som är tillgänglig för sessionen. Om ingen version är tillgänglig returnerar importen ett fel.
@{
RequiredModules = @(
'PSReadLine'
)
}
Dricks
I PowerShell 2.0 Import-Module
importerar du inte nödvändiga moduler automatiskt. Det verifierar bara att de moduler som krävs är i det globala sessionstillståndet.
Det här manifestet deklarerar att det kräver en version av PSReadLine-modulen som finns i den egna modulmappen. När du kör Import-Module
det här manifestet importerar PowerShell den leverantörskopplade PSReadLine från den angivna sökvägen.
@{
RequiredModules = @(
'Vendored\PSReadLine\PSReadLine.psd1'
)
}
Det här manifestet deklarerar att det specifikt kräver version 2.0.0 av PSReadLine-modulen. När du kör Import-Module
det här manifestet importerar PowerShell version 2.0.0 av PSReadLine om den är tillgänglig. Om den inte är tillgänglig Import-Module
returnerar ett fel.
@{
RequiredModules = @(
@{
ModuleName = 'PSReadLine'
RequiredVersion = '2.0.0'
}
)
}
Det här manifestet deklarerar att det kräver att PSReadLine-modulen importeras i version 2.0.0 eller senare.
@{
RequiredModules = @(
@{
ModuleName = 'PSReadLine'
ModuleVersion = '2.0.0'
}
)
}
Det här manifestet deklarerar att det kräver att PSReadLine-modulen importeras i version 2.0.0 eller lägre.
@{
RequiredModules = @(
@{
ModuleName = 'PSReadLine'
MaximumVersion = '2.0.0'
}
)
}
Det här manifestet deklarerar att det kräver att modulen PSDesiredStateConfiguration importeras med en version som är lika med eller högre än 2.0.0 men inte högre än 2.99.99.
@{
RequiredModules = @(
@{
ModuleName = 'PSDesiredStateConfiguration'
ModuleVersion = '2.0.0'
MaximumVersion = '2.99.99'
}
)
}
RequiredAssemblies
Den här inställningen anger de sammansättningsfiler (.dll
) som modulen kräver.
PowerShell läser in de angivna sammansättningarna innan du uppdaterar typer eller format, importerar kapslade moduler eller importerar modulfilen som anges i värdet för RootModule-nyckeln .
Värde | |
---|---|
Indatatyp | System.String[] |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Nej |
Poster för den här inställningen kan vara filnamnet för en sammansättning eller sökvägen till en. Visa en lista över alla obligatoriska sammansättningar, även om de också visas som binära moduler i inställningen NestedModules .
Det här manifestet example.dll
kräver sammansättningen. Innan du läser in formaterings- eller typfiler som anges i det här manifestet läser PowerShell in example.dll
från Assemblies
mappen som finns i samma katalog som modulmanifestet.
@{
RequiredAssemblies = @(
'Assemblies\Example.dll'
)
}
ScriptsToProcess
Den här inställningen anger skriptfiler (.ps1
) som körs i anroparens sessionstillstånd när modulen importeras. Du kan använda dessa skript för att förbereda en miljö, precis som du kan använda ett inloggningsskript.
Värde | |
---|---|
Indatatyp | System.String[] |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Nej |
Om du vill ange skript som körs i modulens sessionstillstånd använder du nyckeln NestedModules .
När du importerar det här manifestet Initialize.ps1
kör PowerShell i den aktuella sessionen.
@{
ScriptsToProcess = @(
'Scripts\Initialize.ps1'
)
}
Om du till exempel Initialize.ps1
skriver informationsmeddelanden och anger variabeln $ExampleState
:
if ([string]::IsNullOrEmpty($ExampleState)) {
Write-Information "Example not initialized."
Write-Information "Initializing now..."
$ExampleState = 'Initialized'
} else {
Write-Information "Example already initialized."
}
När du importerar modulen körs skriptet, skriver de meddelandena och inställningen $ExampleState
i sessionen.
$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
Den här inställningen anger vilka typfiler (.ps1xml
) som körs när modulen importeras.
Värde | |
---|---|
Indatatyp | System.String[] |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Nej |
När du importerar modulen kör PowerShell cmdleten Update-TypeData
med de angivna filerna. Eftersom typfiler inte är begränsade påverkar de alla sessionstillstånd i sessionen.
Mer information om typfiler finns i about_Types.ps1xml
När du till exempel importerar det här manifestet läser PowerShell in de typer som anges i Example.ps1xml
filen från Types
mappen som finns i samma katalog som modulmanifestet.
@{
TypesToProcess = @(
'Types\Example.ps1xml'
)
}
FormatsToProcess
Den här inställningen anger de formateringsfiler (.ps1xml
) som körs när modulen importeras.
Värde | |
---|---|
Indatatyp | System.String[] |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Nej |
När du importerar en modul kör PowerShell cmdleten Update-FormatData
med de angivna filerna. Eftersom formateringsfiler inte är begränsade påverkar de alla sessionstillstånd i sessionen.
Mer information om typfiler finns i about_Format.ps1xml
När du till exempel importerar den här modulen läser PowerShell in de format som anges i Example.ps1xml
filen från Formats
mappen som finns i samma katalog som modulmanifestet.
@{
FormatsToProcess = @(
'Formats\Example.ps1xml'
)
}
NestedModules
Den här inställningen anger skriptmoduler (.psm1
) och binära moduler (.dll
) som importeras till modulens sessionstillstånd. Du kan också ange skriptfiler (.ps1
). Filerna i den här inställningen körs i den ordning de visas.
Värde | |
---|---|
Indatatyp |
System.String[] , System.Collections.Hashtable[] |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Nej |
Poster för den här inställningen kan vara ett modulnamn, en fullständig modulspecifikation eller en sökväg till en modul eller skriptfil.
När värdet är en sökväg kan sökvägen vara fullständigt kvalificerad eller relativ.
När värdet är ett modulnamn eller en specifikation söker PowerShell i PSModulePath efter den angivna modulen.
En modulspecifikation är en hash-tabell som har följande nycklar.
-
ModuleName
- Obligatoriska. Anger modulnamnet. -
GUID
- Valfritt. Anger GUID för modulen. - Det är också Obligatoriskt att ange minst en av de tre nycklarna nedan. Nyckeln
RequiredVersion
kan inte användas medModuleVersion
nycklarna ellerMaximumVersion
. Du kan definiera ett acceptabelt versionsintervall för modulen genom attModuleVersion
ange nycklarna ochMaximumVersion
tillsammans.-
ModuleVersion
– Anger en lägsta godtagbar version av modulen. -
RequiredVersion
– Anger en exakt, nödvändig version av modulen. -
MaximumVersion
– Anger den maximala godkända versionen av modulen.
-
Kommentar
RequiredVersion
lades till i Windows PowerShell 5.0.
MaximumVersion
lades till i Windows PowerShell 5.1.
Alla objekt som behöver exporteras från en kapslad modul måste exporteras av den kapslade modulen med hjälp av cmdleten Export-ModuleMember
eller visas i någon av exportegenskaperna:
- FunctionsToExport
- CmdletsToExport
- VariablesToExport
- AliasToExportera
Kapslade moduler i modulsessionstillståndet är tillgängliga för rotmodulen, men de returneras inte av ett Get-Module
kommando i anroparens sessionstillstånd.
Skript (.ps1
) som anges i den här inställningen körs i modulens sessionstillstånd, inte i anroparens sessionstillstånd. Om du vill köra ett skript i anroparens sessionstillstånd listar du skriptfilnamnet i inställningen ScriptsToProcess .
När du till exempel importerar det här manifestet läses modulen Helpers.psm1
in i rotmodulens sessionstillstånd. Alla cmdletar som deklareras i den kapslade modulen exporteras om inget annat är begränsat.
@{
NestedModules = @(
'Helpers\Helpers.psm1'
)
}
FunctionsToExport
Den här inställningen anger de funktioner som modulen exporterar. Du kan använda den här inställningen för att begränsa de funktioner som exporteras av modulen. Det kan ta bort funktioner från listan över exporterade funktioner, men det kan inte lägga till funktioner i listan.
Värde | |
---|---|
Indatatyp | System.String[] |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Ja |
Du kan ange poster i den här inställningen med jokertecken. Alla matchande funktioner i listan över exporterade funktioner exporteras.
Dricks
För prestanda och identifiering bör du alltid uttryckligen lista de funktioner som du vill att modulen ska exportera i den här inställningen utan att använda jokertecken.
När du till exempel importerar en modul med inställningen utkommenterad exporteras alla funktioner i rotmodulen och eventuella kapslade moduler.
@{
# FunctionsToExport = @()
}
Det här manifestet är funktionellt identiskt med att inte ange inställningen alls.
@{
FunctionsToExport = '*'
}
När FunctionsToExport har angetts som en tom matris finns inga funktioner tillgängliga för rotmodulen eller någon kapslad modulexport när du importerar den här modulen.
@{
FunctionsToExport = @()
}
Kommentar
Om du skapar modulmanifestet New-ModuleManifest
med kommandot och inte anger parametern FunctionsToExport , har det skapade manifestet den här inställningen angiven som en tom matris. Såvida du inte redigerar manifestet exporteras inga funktioner från modulen.
Med FunctionsToExport inställt på att endast inkludera Get-Example
funktionen görs funktionen tillgänglig när du importerar den här modulen Get-Example
, även om andra funktioner exporterades av rotmodulen eller kapslade moduler.
@{
FunctionsToExport = @(
'Get-Example'
)
}
Med FunctionsToExport inställt med en jokerteckensträng, när du importerar den här modulen görs alla funktioner vars namn slutar med Example
tillgängliga, även om andra funktioner exporterades som modulmedlemmar av rotmodulen eller kapslade moduler.
@{
FunctionsToExport = @(
'*Example'
)
}
CmdletsToExport
Den här inställningen anger de cmdletar som modulen exporterar. Du kan använda den här inställningen för att begränsa de cmdletar som exporteras av modulen. Den kan ta bort cmdletar från listan över exporterade modulmedlemmar, men det kan inte lägga till cmdletar i listan.
Värde | |
---|---|
Indatatyp | System.String[] |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Ja |
Du kan ange poster i den här inställningen med jokertecken. Alla matchande cmdletar i listan över exporterade cmdletar exporteras.
Dricks
För prestanda och identifiering bör du alltid uttryckligen lista de cmdletar som du vill att modulen ska exportera i den här inställningen utan att använda jokertecken.
När du till exempel importerar en modul med den här inställningen utkommenterad exporteras alla cmdletar i rotmodulen och alla kapslade moduler.
@{
# CmdletsToExport = @()
}
Det här manifestet är funktionellt identiskt med att inte ange inställningen alls.
@{
CmdletsToExport = '*'
}
Med CmdletsToExport inställt som en tom matris är rotmodulen eller någon kapslad modulexport tillgänglig när du importerar den här modulen.
@{
CmdletsToExport = @()
}
Kommentar
Om du skapar modulmanifestet New-ModuleManifest
med kommandot och inte anger parametern CmdletsToExport har det skapade manifestet den här inställningen angiven som en tom matris. Såvida du inte redigerar manifestet exporteras inga cmdletar från modulen.
Med CmdletsToExport inställt på att endast inkludera cmdleten Get-Example
görs cmdleten tillgänglig när du importerar den här modulen Get-Example
, även om andra cmdletar exporterades av rotmodulen eller kapslade moduler.
@{
CmdletsToExport = @(
'Get-Example'
)
}
Med CmdletsToExport inställt med en jokerteckensträng, när du importerar den här modulen görs alla cmdletar vars namn slutar med Example
tillgängliga, även om andra cmdletar exporterades som modulmedlemmar av rotmodulen eller några kapslade moduler.
@{
CmdletsToExport = @(
'*Example'
)
}
VariablesToExport
Den här inställningen anger de variabler som modulen exporterar. Du kan använda den här inställningen för att begränsa de variabler som exporteras av modulen. Det kan ta bort variabler från listan över exporterade modulmedlemmar, men det kan inte lägga till variabler i listan.
Värde | |
---|---|
Indatatyp | System.String[] |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Ja |
Du kan ange poster i den här inställningen med jokertecken. Alla matchande variabler i listan över exporterade modulmedlemmar exporteras.
Dricks
För prestanda och identifiering bör du alltid uttryckligen lista de variabler som du vill att modulen ska exportera i den här inställningen utan att använda jokertecken.
När du till exempel importerar en modul med den här inställningen utkommenterad exporteras alla variabler i rotmodulen och eventuella kapslade moduler.
@{
# VariablesToExport = @()
}
Det här manifestet är funktionellt identiskt med att inte ange inställningen alls.
@{
VariablesToExport = '*'
}
Kommentar
Om du skapar modulmanifestet New-ModuleManifest
med kommandot och inte anger parametern VariablesToExport har det skapade manifestet den här inställningen angiven som '*'
. Om du inte redigerar manifestet exporteras alla variabler från modulen.
Med VariablesToExport inställt som en tom matris är inga variabler för rotmodulen eller någon kapslad modulexport tillgängliga när du importerar den här modulen.
@{
VariablesToExport = @()
}
Med VariablesToExport inställt på att endast inkludera variabeln SomeExample
görs variabeln tillgänglig när du importerar den här modulen $SomeExample
, även om andra variabler exporterades av rotmodulen eller kapslade moduler.
@{
VariablesToExport = @(
'SomeExample'
)
}
Med VariablesToExport inställt med en jokerteckensträng, när du importerar den här modulen görs alla variabler vars namn slutar med Example
tillgängliga, även om andra variabler exporterades som modulmedlemmar av rotmodulen eller några kapslade moduler.
@{
VariablesToExport = @(
'*Example'
)
}
DscResourcesToExport
Den här inställningen anger de DSC-resurser som modulen exporterar. Du kan använda den här inställningen för att begränsa de klassbaserade DSC-resurser som exporteras av modulen. Den kan ta bort DSC-resurser från listan över exporterade modulmedlemmar, men det går inte att lägga till DSC-resurser i listan.
Värde | |
---|---|
Indatatyp | System.String[] |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Ja |
Du kan ange poster i den här inställningen med jokertecken. Alla matchande klassbaserade DSC-resurser i modulen exporteras.
Dricks
För identifiering bör du alltid uttryckligen lista alla DSC-resurser som din modul exporterar.
Mer information om hur du redigerar och använder DSC-resurser finns i dokumentationen för DSC.
Det här manifestet exporterar alla klassbaserade och MOF-baserade DSC-resurser som definierats i rotmodulen och eventuella kapslade moduler.
@{
# DscResourcesToExport = @()
}
Det här manifestet exporterar alla MOF-baserade DSC-resurser som definierats i rotmodulen och alla kapslade moduler, men bara en klassbaserad DSC-resurs, ExampleClassResource
.
@{
DscResourcesToExport = @(
'ExampleClassResource'
)
}
Det här manifestet exporterar alla DSC-resurser som ingår. Även om den MOF-baserade resursen inte fanns med i listan skulle modulen fortfarande exportera den.
@{
DscResourcesToExport = @(
'ExampleClassResource'
'ExampleMofResourceFirst'
)
}
ModuleList
Den här inställningen är en informationslagerlista över de moduler som ingår i den här. Den här listan påverkar inte modulens beteende.
Värde | |
---|---|
Indatatyp |
System.String[] , System.Collections.Hashtable[] |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Nej |
Poster för den här inställningen kan vara ett modulnamn, en fullständig modulspecifikation eller en sökväg till en modul eller skriptfil.
När värdet är en sökväg kan sökvägen vara fullständigt kvalificerad eller relativ.
När värdet är ett modulnamn eller en specifikation söker PowerShell i PSModulePath efter den angivna modulen.
En modulspecifikation är en hash-tabell som har följande nycklar.
-
ModuleName
- Obligatoriska. Anger modulnamnet. -
GUID
- Valfritt. Anger GUID för modulen. - Det är också Obligatoriskt att ange minst en av de tre nycklarna nedan. Nyckeln
RequiredVersion
kan inte användas medModuleVersion
nycklarna ellerMaximumVersion
. Du kan definiera ett acceptabelt versionsintervall för modulen genom attModuleVersion
ange nycklarna ochMaximumVersion
tillsammans.-
ModuleVersion
– Anger en lägsta godtagbar version av modulen. -
RequiredVersion
– Anger en exakt, nödvändig version av modulen. -
MaximumVersion
– Anger den maximala godkända versionen av modulen.
-
Kommentar
RequiredVersion
lades till i Windows PowerShell 5.0.
MaximumVersion
lades till i Windows PowerShell 5.1.
Det här manifestet innehåller ingen informationslista över de moduler som ingår. Den kanske eller kanske inte har moduler. Även om den här inställningen inte har angetts fungerar alla moduler som anges i inställningarna RootModule, ScriptsToProcess eller NestedModules fortfarande normalt.
@{
# ModuleList = @()
}
Det här manifestet deklarerar att de enda modulerna som ingår är Example.psm1
och undermodulerna First.psm1
och Second.psm1
i Submodules
mappen.
@{
ModuleList = @(
'Example.psm1'
'Submodules\First.psm1'
'Submodules\Second.psm1'
)
}
Fillista
Den här inställningen är en informationslagerlista över de filer som ingår i den här modulen. Den här listan påverkar inte modulens beteende.
Värde | |
---|---|
Indatatyp | System.String[] |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Ja |
Poster för den här inställningen ska vara den relativa sökvägen till en fil från mappen som innehåller modulmanifestet.
När en användare anropar Get-Module
mot ett manifest med den här inställningen definierad innehåller egenskapen FileList den fullständiga sökvägen till dessa filer och ansluter modulens sökväg till varje posts relativa sökväg.
Det här manifestet innehåller inte en lista över dess filer.
@{
# FileList = @()
}
Det här manifestet deklarerar att de enda filer som ingår visas i den här inställningen.
@{
FileList = @(
'Example.psd1'
'Example.psm1'
'Assemblies\Example.dll'
'Scripts\Initialize.ps1'
'Submodules\First.psm1'
'Submodules\Second.psm1'
)
}
PrivateData
Den här inställningen definierar en hash-tabell med data som är tillgänglig för alla kommandon eller funktioner i rotmodulens omfång.
Värde | |
---|---|
Indatatyp | System.Collections.Hashtable |
Krävs | PowerShell-galleri, Crescendo |
Värde om det tas bort | $null |
Accepterar jokertecken | Nej |
När du exporterar ett Crescendo-manifest för att skapa en ny modul lägger Export-CrescendoModule
du till två nycklar till PrivateData
- CrescendoGenerated – tidsstämpel när modulen exporterades
- CrescendoVersion – den version av Crescendo som används för att exportera modulen
Du kan lägga till egna nycklar för att lagra metadata som du vill spåra. Alla nycklar som läggs till i den här inställningen är tillgängliga för funktioner och cmdletar i rotmodulen med hjälp av $MyInvocation.MyCommand.Module.PrivateData
. Hash-tabellen är inte tillgänglig i själva modulomfånget, bara i cmdletar som du definierar i modulen.
Det här manifestet definierar till exempel nyckeln PublishedDate i PrivateData.
@{
PrivateData = @{
PublishedDate = '2022-06-01'
}
}
Cmdletar i modulen kan komma åt det här värdet med variabeln $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"
}
}
När modulen har importerats använder funktionen värdet från PrivateData för att avgöra när modulen publicerades.
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
Den underordnade PSData-egenskapen definierar en hash-tabell med värden som stöder specifika tilläggsscenarier.
Värde | |
---|---|
Indatatyp | System.Collections.Hashtable |
Krävs | PowerShell-galleri, experimentella funktioner, Crescendo-moduler |
Värde om det tas bort | $null |
Accepterar jokertecken | Nej |
Den underordnade PSData-egenskapen används för följande scenarier:
- PowerShell-galleriet – När du skapar ett modulmanifest med hjälp av
New-ModuleManifest
cmdleten fylls PSData-hashtabellen i förväg med platshållarnycklar som behövs när du publicerar modulen i PowerShell-galleriet. Mer information om modulmanifest och publicering till PowerShell-galleriet finns i Paketmanifestvärden som påverkar Användargränssnittet för PowerShell-galleriet. - Experimentella funktioner – Metadata om en experimentell funktion sparas i egenskapen ExperimentalFeatures för PSData. Egenskapen ExperimentalFeatures är en matris med hashtables som innehåller funktionens namn och beskrivning. Mer information finns i Deklarera experimentella funktioner i moduler.
- Crescendo-moduler – När du exporterar ett Crescendo-manifest för att skapa en ny modul lägger
Export-CrescendoModule
du till värdetCrescendoBuilt
i egenskapen PSData.Tags . Du kan använda den här taggen för att hitta moduler i PowerShell-galleriet som skapades med crescendo. Mer information finns i Export-CrescendoModule.
HelpInfoURI
Den här inställningen anger Internetadressen för HELPInfo XML-filen för modulen.
Värde | |
---|---|
Indatatyp | System.String |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Nej |
Den här inställningens värde måste vara en URI (Uniform Resource Identifier) som börjar med http eller https.
Xml-filen HelpInfo stöder funktionen Updatable Help som introducerades i PowerShell 3.0. Den innehåller information om platsen för nedladdningsbara hjälpfiler för modulen och versionsnumren för de senaste hjälpfilerna för varje språk som stöds.
Information om uppdateringsbar hjälp finns i about_Updatable_Help. Information om XML-filen HelpInfo finns i Support Updatable Help (Stöd för uppdateringsbar hjälp).
Den här modulen har till exempel stöd för uppdaterad hjälp.
@{
HelpInfoUri = 'http://https://go.microsoft.com/fwlink/?LinkID=603'
}
DefaultCommandPrefix
Den här inställningen anger ett prefix som förbereds för substantiven för alla kommandon i modulen när de importeras till en session. Prefix hjälper till att förhindra konflikter med kommandonamn i en användares session.
Värde | |
---|---|
Indatatyp | System.String |
Krävs | Nej |
Värde om det tas bort | $null |
Accepterar jokertecken | Nej |
Modulanvändare kan åsidosätta det här prefixet genom att ange prefixparametern för cmdleten Import-Module
.
Den här inställningen introducerades i PowerShell 3.0.
När det här manifestet importeras har Example
alla cmdletar som importerats från den här modulen förberetts till substantivet i deras namn. Till exempel Get-Item
importeras som Get-ExampleItem
.
@{
DefaultCommandPrefix = 'Example'
}