about_Module_Manifests
Korte beschrijving
Beschrijft de instellingen en procedures voor het schrijven van modulemanifestbestanden.
Lange beschrijving
Een modulemanifest is een PowerShell-gegevensbestand (.psd1
) met een hash-tabel.
De sleutels-waardeparen in de hash-tabel beschrijven de inhoud en kenmerken van de module, definiëren de vereisten en bepalen hoe de onderdelen worden verwerkt.
Manifesten zijn niet vereist om een module te laden, maar ze zijn vereist om een module te publiceren in de PowerShell Gallery. Met manifesten kunt u ook de implementatie van uw module scheiden van hoe deze wordt geladen. Met een manifest kunt u vereisten, compatibiliteit, laadvolgorde en meer definiëren.
Wanneer u deze gebruikt New-ModuleManifest
zonder parameters op te geven voor de instellingen van het manifest, wordt er een minimaal manifestbestand geschreven. In het onderstaande fragment ziet u deze standaarduitvoer, gefragmenteerd commentaar en afstand voor beknoptheid:
@{
# 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 = ''
}
U kunt Test-ModuleManifest
een modulemanifest valideren voordat u de module publiceert. Test-ModuleManifest
retourneert een fout als het manifest ongeldig is of de module niet kan worden geïmporteerd in de huidige sessie omdat de sessie niet voldoet aan de vereisten die zijn ingesteld in het manifest.
Scriptcode gebruiken in een modulemanifest
De waarden die aan de instellingen in het manifestbestand zijn toegewezen, kunnen expressies zijn die door PowerShell worden geëvalueerd. Hiermee kunt u paden maken en waarden voorwaardelijk toewijzen op basis van variabelen.
Wanneer u een module importeert met behulp van Import-Module
, wordt het manifest geëvalueerd in Restricted
de taalmodus. Restricted
de modus beperkt de opdrachten en variabelen die kunnen worden gebruikt.
Toegestane opdrachten
Import-LocalizedData
ConvertFrom-StringData
Write-Host
Out-Host
Join-Path
Toegestane variabelen
$PSScriptRoot
$PSEdition
$EnabledExperimentalFeatures
- Omgevingsvariabelen, zoals
$ENV:TEMP
Zie about_Language_Modes voor meer informatie.
Manifestinstellingen
De volgende secties beschrijven elke beschikbare instelling in een modulemanifest en hoe u deze kunt gebruiken. Ze beginnen met een synopsis van de instelling en worden gevolgd door een matrix met de volgende lijsten:
- Invoertype: het objecttype dat u voor deze instelling kunt opgeven in het manifest.
- Vereist: Als deze waarde is
Yes
, is de instelling vereist om de module te importeren en te publiceren in de PowerShell Gallery. Als dat zo isNo
, is het vereist voor geen van beide. Als dat zo isPowerShell Gallery
, is het alleen vereist voor publicatie naar de PowerShell Gallery. - Waarde indien niet ingesteld: de waarde die deze instelling heeft wanneer deze wordt geïmporteerd en niet expliciet is ingesteld.
- Accepteert jokertekens: of deze instelling een jokertekenwaarde kan aannemen of niet.
RootModule
Met deze instelling geeft u het primaire of hoofdbestand van de module op. Wanneer de module wordt geïmporteerd, worden de leden die door het hoofdmodulebestand worden geëxporteerd, geïmporteerd in de sessiestatus van de aanroeper.
Weergegeven als | |
---|---|
Invoertype | System.String |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Nee |
De waarde moet het pad naar een van de volgende zijn:
- een script (
.ps1
) - een scriptmodule (
.psm1
) - een modulemanifest (
.psd1
) - een assembly (
.dll
) - een XML-bestand met cmdlet-definities (
.cdxml
) - een Windows PowerShell 5.1-werkstroom (
.xaml
)
Het pad moet relatief zijn ten opzichte van het modulemanifest.
Als er geen hoofdbestand voor een modulemanifest is aangewezen in de rootModule-sleutel , wordt het manifest het primaire bestand voor de module en wordt de module een manifestmodule (ModuleType = Manifest). Wanneer RootModule is gedefinieerd, wordt het type van de module bepaald op basis van de gebruikte bestandsextensie:
- een
.ps1
of.psm1
bestand maakt het moduletype Script - een
.psd1
bestand maakt het moduletype Manifest - een
.dll
bestand maakt het moduletype Binair - een
.cdxml
bestand maakt het moduletype CIM - een
.xaml
bestand maakt het moduletype Workflow
Standaard worden alle moduleleden in de RootModule geëxporteerd.
Tip
De laadsnelheid van de module verschilt tussen de moduletypen Binair, Script en CIM . Zie ontwerpoverwegingen voor PowerShell-modules voor meer informatie
Het ModuleType van deze module is bijvoorbeeld Manifest. De enige moduleleden die deze module kunnen exporteren, zijn de modules die zijn gedefinieerd in de modules die zijn opgegeven met de instelling NestedModules .
@{
RootModule = ''
}
Notitie
Deze instelling kan ook worden opgegeven in modulemanifesten als ModuleToProcess. Hoewel deze naam voor deze instelling geldig is, is het raadzaam om in plaats daarvan RootModule te gebruiken.
ModuleVersion
Met deze instelling geeft u de versie van de module op. Wanneer er meerdere versies van een module op een systeem bestaan, wordt de nieuwste versie standaard geladen wanneer u deze uitvoert Import-Module
.
Weergegeven als | |
---|---|
Invoertype | System.String |
Vereist | Ja |
Waarde als de waarde is uitgeschakeld | Geen |
Accepteert jokertekens | Nee |
De waarde van deze instelling moet converteerbaar zijn naar System.Version
wanneer u draait Import-Module
.
Dit manifest declareert bijvoorbeeld de versie van de module als '1.2.3'
.
@{
ModuleVersion = '1.2.3'
}
Wanneer u de module importeert en de eigenschap Versie inspecteert, moet u er rekening mee houden dat het een System.Version-object is en geen tekenreeks:
$ExampleModule = Import-Module example.psd1
$ExampleModule.Version
$ExampleModule.Version.GetType().Name
Major Minor Build Revision
----- ----- ----- --------
1 2 3 -1
Version
CompatibelePSEditions
Met deze instelling geeft u de compatibele PSEditions van de module op.
Weergegeven als | |
---|---|
Invoertype | System.String[] |
Geaccepteerde waarden | Desktop , Core |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Nee |
Als de waarde van deze instelling is $null
, kan de module worden geïmporteerd, ongeacht de PSEdition van de sessie. U kunt deze instellen op een of meer geaccepteerde waarden.
Zie voor meer informatie over PSEdition:
Wanneer deze instelling is gedefinieerd, kan de module alleen worden geïmporteerd in een sessie waarin de waarde van de $PSEdition
automatische variabele wordt opgenomen in de instelling.
Notitie
Omdat de $PSEdition
automatische variabele is geïntroduceerd in versie 5.1, kunnen oudere versies van Windows PowerShell geen module laden die gebruikmaakt van de instelling CompatiblePSEditions .
U kunt dit modulemanifest bijvoorbeeld importeren in elke sessie:
@{
# CompatiblePSEditions = @()
}
Met de opgegeven instelling kan deze module alleen worden geïmporteerd in sessies waarin de waarde van de $PSEdition
automatische variabele is Core
.
@{
CompatiblePSEditions = @('Core')
}
GUID
Met deze instelling wordt een unieke id voor de module opgegeven. De GUID wordt gebruikt om onderscheid te maken tussen modules met dezelfde naam.
Weergegeven als | |
---|---|
Invoertype | System.String |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | 00000000-0000-0000-0000-000000000000 |
Accepteert jokertekens | Nee |
De waarde van deze instelling moet converteerbaar zijn naar System.Guid
wanneer u draait Import-Module
.
Let op
Hoewel het geen vereiste instelling is, heeft het niet opgeven van een GUID in een manifest geen voordelen en kan dit leiden tot naamconflicten voor modules.
U kunt een nieuwe guid maken voor gebruik in uw manifest:
New-Guid | Select-Object -ExpandProperty Guid
8456b025-2fa5-4034-ae47-e6305f3917ca
@{
GUID = '8456b025-2fa5-4034-ae47-e6305f3917ca'
}
Als er een andere module op de computer met dezelfde naam staat, kunt u de gewenste module nog steeds importeren door de volledig gekwalificeerde naam van de module op te geven:
Import-Module -FullyQualifiedName @{
ModuleName = 'Example'
GUID = '8456b025-2fa5-4034-ae47-e6305f3917ca'
ModuleVersion = '1.0.0'
}
Auteur
Met deze instelling wordt de auteur van de module geïdentificeerd.
Weergegeven als | |
---|---|
Invoertype | System.String |
Vereist | PowerShell Gallery |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Nee |
Dit manifest verklaart dat de auteur van de module het Contoso Developer Experience Team is.
@{
Author = 'Contoso Developer Experience Team'
}
CompanyName
Deze instelling identificeert het bedrijf of de leverancier die de module heeft gemaakt.
Weergegeven als | |
---|---|
Invoertype | System.String |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Nee |
Dit manifest declareert dat de module is gemaakt door Contoso, Ltd.
@{
CompanyName = 'Contoso, Ltd.'
}
Auteursrecht
Met deze instelling wordt een copyrightverklaring voor de module opgegeven.
Weergegeven als | |
---|---|
Invoertype | System.String |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Nee |
Dit manifest verklaart een copyrightverklaring die alle rechten reserveert voor Contoso, Ltd. vanaf 2022.
@{
Copyright = '(c) 2022 Contoso, Ltd. All rights reserved.'
}
Beschrijving
Deze instelling beschrijft de module op hoog niveau.
Weergegeven als | |
---|---|
Invoertype | System.String |
Vereist | PowerShell Gallery |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Nee |
Dit manifest bevat een korte beschrijving. U kunt ook een hier-tekenreeks gebruiken om een langere of meerregelige beschrijving te schrijven.
@{
Description = 'Example commands to show a valid module manifest'
}
PowerShellVersion
Met deze instelling geeft u de minimale versie van PowerShell op die voor deze module is vereist.
Weergegeven als | |
---|---|
Invoertype | System.String |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Nee |
De waarde van deze instelling moet converteerbaar zijn naar System.Version
wanneer u draait Import-Module
.
Als deze instelling niet is ingesteld, beperkt PowerShell het importeren van de module niet op basis van de huidige versie.
Dit manifest declareert bijvoorbeeld dat de module compatibel is met elke versie van PowerShell en Windows PowerShell.
@{
# PowerShellVersion = ''
}
Als PowerShellVersion is ingesteld op 7.2
, kunt u de module alleen importeren in PowerShell 7.2 of hoger.
@{
PowerShellVersion = '7.2'
}
PowerShellHostName
Met deze instelling geeft u de naam op van het PowerShell-hostprogramma dat de module vereist, zoals Windows PowerShell ISE Host of ConsoleHost.
Weergegeven als | |
---|---|
Invoertype | System.String |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Nee |
U vindt de naam van de host voor een sessie met de $Host.Name
instructie. U kunt bijvoorbeeld zien dat de host voor een externe sessie ServerRemoteHost is in plaats van ConsoleHost:
$Host.Name
Enter-PSSession -ComputerName localhost
$Host.Name
ConsoleHost
[localhost]: PS C:\Users\username\Documents> $Host.Name
ServerRemoteHost
Deze module kan worden geïmporteerd in elke host.
@{
# PowerShellHostName = ''
}
Als PowerShellHostName is ingesteld op ServerRemoteHost
, kunt u de module alleen importeren in een externe PowerShell-sessie.
@{
PowerShellHostName = 'ServerRemoteHost'
}
PowerShellHostVersion
Met deze instelling geeft u de minimale versie van een PowerShell-hostprogramma op dat voor de module is vereist.
Weergegeven als | |
---|---|
Invoertype | System.String |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Nee |
De waarde van deze instelling moet converteerbaar zijn naar System.Version
wanneer u draait Import-Module
.
Let op
Hoewel deze instelling kan worden gebruikt zonder de instelling PowerShellHostName , neemt de kans op onverwacht gedrag toe. Gebruik deze instelling alleen wanneer u ook de instelling PowerShellHostName gebruikt.
De module van dit manifest kan bijvoorbeeld worden geïmporteerd uit elke PowerShell-sessie die wordt uitgevoerd in ConsoleHost, ongeacht de versie van de host.
@{
PowerShellHostName = 'ConsoleHost'
# PowerShellHostVersion = ''
}
Als de PowerShellHostVersion is ingesteld op 5.1
, kunt u de module alleen importeren uit een PowerShell-sessie die wordt uitgevoerd in ConsoleHost , waarbij de versie van de host 5.1 of hoger is.
@{
PowerShellHostName = 'ConsoleHost'
PowerShellHostVersion = '5.1'
}
DotNetFrameworkVersion
Met deze instelling geeft u de minimale versie van Microsoft .NET Framework op die voor de module is vereist.
Weergegeven als | |
---|---|
Invoertype | System.String |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Nr. |
Notitie
Deze instelling is alleen geldig voor de PowerShell Desktop-editie, zoals Windows PowerShell 5.1, en is alleen van toepassing op .NET Framework-versies lager dan 4.5. Deze vereiste heeft geen effect voor nieuwere versies van PowerShell of .NET Framework.
De waarde van deze instelling moet converteerbaar zijn naar System.Version
wanneer u draait Import-Module
.
Dit manifest declareert bijvoorbeeld dat de module kan worden geïmporteerd in elke PowerShell- of Windows PowerShell-sessie, ongeacht de versie van Microsoft .NET Framework.
@{
# DotNetFrameworkVersion = ''
}
Als DotNetFrameworkVersion is ingesteld 4.0
op, kunt u deze module importeren in elke sessie van Windows PowerShell, waarbij de meest recente beschikbare versie van Microsoft .NET Framework ten minste 4.0 is. U kunt deze ook importeren in elke PowerShell-sessie.
@{
DotNetFrameworkVersion = '4.0'
}
CLRVersion
Met deze instelling geeft u de minimale versie van de Common Language Runtime (CLR) van Microsoft .NET Framework op die voor de module is vereist.
Weergegeven als | |
---|---|
Invoertype | System.String |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Nr. |
Notitie
Deze instelling is alleen geldig voor de PowerShell Desktop-editie, zoals Windows PowerShell 5.1, en is alleen van toepassing op .NET Framework-versies lager dan 4.5. Deze vereiste heeft geen effect voor nieuwere versies van PowerShell of .NET Framework.
De waarde van deze instelling moet converteerbaar zijn naar System.Version
wanneer u draait Import-Module
.
Dit manifest declareert bijvoorbeeld dat de module kan worden geïmporteerd in elke PowerShell- of Windows PowerShell-sessie, ongeacht de versie van de CLR-versie van Microsoft .NET Framework.
@{
# CLRVersion = ''
}
Als CLRVersion is ingesteld 4.0
op, kunt u deze module importeren in elke sessie van Windows PowerShell, waarbij de meest recente beschikbare versie van de CLR ten minste 4.0 is. U kunt deze ook importeren in elke PowerShell-sessie.
@{
CLRVersion = '4.0'
}
ProcessorArchitecture
Met deze instelling geeft u de processorarchitectuur op die nodig is voor de module.
Weergegeven als | |
---|---|
Invoertype | System.String |
Geaccepteerde waarden | None , , MSIL X86 , IA64 , , , Amd64 Arm |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | None |
Accepteert jokertekens | Nee |
De waarde van deze instelling moet converteerbaar zijn naar System.Reflection.ProcessorArchitecture
wanneer u draait Import-Module
.
Dit manifest declareert bijvoorbeeld dat de module kan worden geïmporteerd in elke sessie, ongeacht de processorarchitectuur van het systeem.
@{
# ProcessorArchitecture = ''
}
Als ProcessorArchitecture is ingesteld Amd64
op, kunt u deze module alleen importeren in een sessie die wordt uitgevoerd op een computer met een overeenkomende architectuur.
@{
ProcessorArchitecture = 'Amd64'
}
RequiredModules
Met deze instelling geeft u modules op die de globale sessiestatus moeten hebben. Als de vereiste modules niet de status van de globale sessie hebben, worden deze geïmporteerd in PowerShell.
Als de vereiste modules niet beschikbaar zijn, mislukt de Import-Module
opdracht.
Weergegeven als | |
---|---|
Invoertype | System.String[] , System.Collections.Hashtable[] |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Nee |
Vermeldingen voor deze instelling kunnen een modulenaam, een volledige modulespecificatie of een pad naar een modulebestand zijn.
Wanneer de waarde een pad is, kan het pad volledig of relatief zijn.
Wanneer de waarde een naam of modulespecificatie is, zoekt PowerShell naar de PSModulePath voor de opgegeven module.
Een modulespecificatie is een hash-tabel met de volgende sleutels.
ModuleName
- Vereist. Hiermee geeft u de modulenaam.GUID
- Optioneel. Hiermee geeft u de GUID van de module.- Het is ook vereist om ten minste één van de drie onderstaande sleutels op te geven. De
RequiredVersion
sleutel kan niet worden gebruikt met deModuleVersion
ofMaximumVersion
sleutels. U kunt een acceptabel versiebereik voor de module definiëren door deModuleVersion
enMaximumVersion
sleutels samen op te geven.ModuleVersion
- Hiermee geeft u een minimaal acceptabele versie van de module.RequiredVersion
- Hiermee geeft u een exacte, vereiste versie van de module.MaximumVersion
- Hiermee geeft u de maximaal aanvaardbare versie van de module.
Notitie
RequiredVersion
is toegevoegd in Windows PowerShell 5.0.
MaximumVersion
is toegevoegd in Windows PowerShell 5.1.
Dit manifest declareert bijvoorbeeld dat voor de module geen andere modules nodig zijn voor de functionaliteit ervan.
@{
# RequiredModules = @()
}
Dit manifest declareert dat de PSReadLine-module is vereist. Wanneer u dit manifest uitvoert Import-Module
, importeert PowerShell de nieuwste versie van PSReadLine die beschikbaar is voor de sessie. Als er geen versie beschikbaar is, retourneert het importeren een fout.
@{
RequiredModules = @(
'PSReadLine'
)
}
Tip
In PowerShell 2.0 Import-Module
worden de vereiste modules niet automatisch geïmporteerd. Alleen wordt gecontroleerd of de vereiste modules de status van de globale sessie hebben.
Dit manifest declareert dat er een versie van de PSReadLine-module is vereist die is leverancier in de eigen modulemap. Wanneer u dit manifest uitvoert Import-Module
, importeert PowerShell de leverancier van PSReadLine uit het opgegeven pad.
@{
RequiredModules = @(
'Vendored\PSReadLine\PSReadLine.psd1'
)
}
Dit manifest declareert dat specifiek versie 2.0.0 van de PSReadLine-module is vereist. Wanneer u dit manifest uitvoert Import-Module
, importeert PowerShell versie 2.0.0 van PSReadLine als deze beschikbaar is. Als deze niet beschikbaar is, Import-Module
wordt een fout geretourneerd.
@{
RequiredModules = @(
@{
ModuleName = 'PSReadLine'
RequiredVersion = '2.0.0'
}
)
}
Dit manifest declareert dat de PSReadLine-module moet worden geïmporteerd op versie 2.0.0 of hoger.
@{
RequiredModules = @(
@{
ModuleName = 'PSReadLine'
ModuleVersion = '2.0.0'
}
)
}
Dit manifest declareert dat de PSReadLine-module moet worden geïmporteerd op versie 2.0.0 of lager.
@{
RequiredModules = @(
@{
ModuleName = 'PSReadLine'
MaximumVersion = '2.0.0'
}
)
}
Dit manifest declareert dat de PSDesiredStateConfiguration-module moet worden geïmporteerd in een versie die gelijk is aan of hoger is dan 2.0.0, maar niet hoger dan 2.99.99.
@{
RequiredModules = @(
@{
ModuleName = 'PSDesiredStateConfiguration'
ModuleVersion = '2.0.0'
MaximumVersion = '2.99.99'
}
)
}
Vereisteassemblies
Met deze instelling geeft u de assemblybestanden (.dll
) op die de module nodig heeft.
PowerShell laadt de opgegeven assembly's voordat u typen of indelingen bijwerkt, geneste modules importeert of het modulebestand importeert dat is opgegeven in de waarde van de RootModule-sleutel .
Weergegeven als | |
---|---|
Invoertype | System.String[] |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Nee |
Vermeldingen voor deze instelling kunnen de bestandsnaam van een assembly of het pad naar een assembly zijn. Vermeld alle vereiste assembly's, zelfs als ze ook worden vermeld als binaire modules in de instelling NestedModules .
Voor dit manifest is de example.dll
assembly vereist. Voordat u opmaak- of typebestanden laadt die in dit manifest zijn opgegeven, wordt PowerShell geladen example.dll
vanuit de Assemblies
map die zich in dezelfde map bevindt als het modulemanifest.
@{
RequiredAssemblies = @(
'Assemblies\Example.dll'
)
}
ScriptsToProcess
Met deze instelling geeft u scriptbestanden op.ps1
die worden uitgevoerd in de sessiestatus van de aanroeper wanneer de module wordt geïmporteerd. U kunt deze scripts gebruiken om een omgeving voor te bereiden, net zoals u een aanmeldingsscript kunt gebruiken.
Weergegeven als | |
---|---|
Invoertype | System.String[] |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Nee |
Als u scripts wilt opgeven die worden uitgevoerd in de sessiestatus van de module, gebruikt u de sleutel NestedModules .
Wanneer u dit manifest importeert, wordt in PowerShell de Initialize.ps1
huidige sessie uitgevoerd.
@{
ScriptsToProcess = @(
'Scripts\Initialize.ps1'
)
}
Als Initialize.ps1
u bijvoorbeeld informatieve berichten schrijft en de $ExampleState
variabele instelt:
if ([string]::IsNullOrEmpty($ExampleState)) {
Write-Information "Example not initialized."
Write-Information "Initializing now..."
$ExampleState = 'Initialized'
} else {
Write-Information "Example already initialized."
}
Wanneer u de module importeert, wordt het script uitgevoerd en worden deze berichten geschreven en ingesteld $ExampleState
in uw sessie.
$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
Met deze instelling geeft u de typebestanden () op die worden.ps1xml
uitgevoerd wanneer de module wordt geïmporteerd.
Weergegeven als | |
---|---|
Invoertype | System.String[] |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Nee |
Wanneer u de module importeert, voert PowerShell de Update-TypeData
cmdlet uit met de opgegeven bestanden. Omdat typebestanden niet binnen het bereik vallen, hebben ze invloed op alle sessiestatussen in de sessie.
Zie about_Types.ps1xml voor meer informatie over typebestanden
Wanneer u dit manifest bijvoorbeeld importeert, worden in PowerShell de typen geladen die zijn opgegeven in het Example.ps1xml
bestand uit de Types
map in dezelfde map als het modulemanifest.
@{
TypesToProcess = @(
'Types\Example.ps1xml'
)
}
FormatsToProcess
Met deze instelling geeft u de opmaakbestanden (.ps1xml
) op die worden uitgevoerd wanneer de module wordt geïmporteerd.
Weergegeven als | |
---|---|
Invoertype | System.String[] |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Nee |
Wanneer u een module importeert, voert PowerShell de Update-FormatData
cmdlet uit met de opgegeven bestanden. Omdat opmaakbestanden niet binnen het bereik vallen, hebben ze invloed op alle sessiestatussen in de sessie.
Zie about_Format.ps1xml voor meer informatie over typebestanden
Wanneer u deze module bijvoorbeeld importeert, worden in PowerShell de indelingen geladen die zijn opgegeven in het Example.ps1xml
bestand uit de Formats
map in dezelfde map als het modulemanifest.
@{
FormatsToProcess = @(
'Formats\Example.ps1xml'
)
}
NestedModules
Met deze instelling worden scriptmodules () en binaire modules (.psm1
.dll
) opgegeven die in de sessiestatus van de module worden geïmporteerd. U kunt ook scriptbestanden (.ps1
) opgeven. De bestanden in deze instelling worden uitgevoerd in de volgorde waarin ze worden weergegeven.
Weergegeven als | |
---|---|
Invoertype | System.String[] , System.Collections.Hashtable[] |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Nee |
Vermeldingen voor deze instelling kunnen een modulenaam, een volledige modulespecificatie of een pad naar een module of scriptbestand zijn.
Wanneer de waarde een pad is, kan het pad volledig of relatief zijn.
Wanneer de waarde een modulenaam of -specificatie is, zoekt PowerShell naar de PSModulePath voor de opgegeven module.
Een modulespecificatie is een hash-tabel met de volgende sleutels.
ModuleName
- Vereist. Hiermee geeft u de modulenaam.GUID
- Optioneel. Hiermee geeft u de GUID van de module.- Het is ook vereist om ten minste één van de drie onderstaande sleutels op te geven. De
RequiredVersion
sleutel kan niet worden gebruikt met deModuleVersion
ofMaximumVersion
sleutels. U kunt een acceptabel versiebereik voor de module definiëren door deModuleVersion
enMaximumVersion
sleutels samen op te geven.ModuleVersion
- Hiermee geeft u een minimaal acceptabele versie van de module.RequiredVersion
- Hiermee geeft u een exacte, vereiste versie van de module.MaximumVersion
- Hiermee geeft u de maximaal aanvaardbare versie van de module.
Notitie
RequiredVersion
is toegevoegd in Windows PowerShell 5.0.
MaximumVersion
is toegevoegd in Windows PowerShell 5.1.
Alle items die moeten worden geëxporteerd uit een geneste module, moeten worden geëxporteerd door de geneste module met behulp van de Export-ModuleMember
cmdlet of worden vermeld in een van de exporteigenschappen:
- FunctionsToExport
- CmdletsToExport
- VariablesToExport
- AliasesToExport
Geneste modules in de sessiestatus van de module zijn beschikbaar voor de hoofdmodule, maar worden niet geretourneerd door een Get-Module
opdracht in de sessiestatus van de aanroeper.
Scripts (.ps1
) die in deze instelling worden vermeld, worden uitgevoerd in de sessiestatus van de module, niet in de sessiestatus van de beller. Als u een script in de sessiestatus van de aanroeper wilt uitvoeren, vermeldt u de bestandsnaam van het script in de instelling ScriptsToProcess .
Wanneer u dit manifest bijvoorbeeld importeert, wordt de Helpers.psm1
module geladen in de sessiestatus van de hoofdmodule. Cmdlets die in de geneste module zijn gedeclareerd, worden geëxporteerd, tenzij anders beperkt.
@{
NestedModules = @(
'Helpers\Helpers.psm1'
)
}
FunctionsToExport
Met deze instelling geeft u de functies op die door de module worden geëxporteerd. U kunt deze instelling gebruiken om de functies te beperken die door de module worden geëxporteerd. Het kan functies verwijderen uit de lijst met geëxporteerde functies, maar kan geen functies toevoegen aan de lijst.
Weergegeven als | |
---|---|
Invoertype | System.String[] |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Ja |
U kunt vermeldingen in deze instelling opgeven met jokertekens. Alle overeenkomende functies in de lijst met geëxporteerde functies worden geëxporteerd.
Tip
Voor prestaties en detectie moet u altijd expliciet de functies vermelden die u in deze instelling wilt exporteren zonder jokertekens te gebruiken.
Wanneer u bijvoorbeeld een module importeert waarin de instelling is gemarkeerd als commentaar, worden alle functies in de hoofdmodule en geneste modules geëxporteerd.
@{
# FunctionsToExport = @()
}
Dit manifest is functioneel identiek om de instelling helemaal niet op te geven.
@{
FunctionsToExport = '*'
}
Als FunctionsToExport is ingesteld als een lege matrix, zijn er bij het importeren van deze module geen functies beschikbaar die de hoofdmodule of geneste modules exporteren.
@{
FunctionsToExport = @()
}
Notitie
Als u het modulemanifest maakt met de New-ModuleManifest
opdracht en de parameter FunctionsToExport niet opgeeft, heeft het gemaakte manifest deze instelling opgegeven als een lege matrix. Tenzij u het manifest bewerkt, worden er geen functies uit de module geëxporteerd.
Als FunctionsToExport is ingesteld op alleen de Get-Example
functie, wordt bij het importeren van deze module alleen de Get-Example
functie beschikbaar gesteld, zelfs als andere functies zijn geëxporteerd door de hoofdmodule of geneste modules.
@{
FunctionsToExport = @(
'Get-Example'
)
}
Met FunctionsToExport ingesteld met een jokertekenreeks, wanneer u deze module importeert, wordt elke functie waarvan de naam eindigt Example
beschikbaar gemaakt, zelfs als andere functies zijn geëxporteerd als moduleleden door de hoofdmodule of geneste modules.
@{
FunctionsToExport = @(
'*Example'
)
}
CmdletsToExport
Met deze instelling worden de cmdlets opgegeven die door de module worden geëxporteerd. U kunt deze instelling gebruiken om de cmdlets te beperken die door de module worden geëxporteerd. Er kunnen cmdlets worden verwijderd uit de lijst met geëxporteerde moduleleden, maar er kunnen geen cmdlets aan de lijst worden toegevoegd.
Weergegeven als | |
---|---|
Invoertype | System.String[] |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Ja |
U kunt vermeldingen in deze instelling opgeven met jokertekens. Alle overeenkomende cmdlets in de lijst met geëxporteerde cmdlets worden geëxporteerd.
Tip
Voor prestaties en detectie moet u altijd expliciet de cmdlets vermelden die u in deze instelling wilt exporteren zonder jokertekens te gebruiken.
Wanneer u bijvoorbeeld een module importeert met deze instelling als commentaar, worden alle cmdlets in de hoofdmodule en geneste modules geëxporteerd.
@{
# CmdletsToExport = @()
}
Dit manifest is functioneel identiek om de instelling helemaal niet op te geven.
@{
CmdletsToExport = '*'
}
Als cmdletsToExport is ingesteld als een lege matrix, zijn er geen cmdlets beschikbaar wanneer u deze module importeert of als er geneste modules worden geëxporteerd.
@{
CmdletsToExport = @()
}
Notitie
Als u uw modulemanifest maakt met de New-ModuleManifest
opdracht en de parameter CmdletsToExport niet opgeeft, heeft het gemaakte manifest deze instelling opgegeven als een lege matrix. Tenzij u het manifest bewerkt, worden er geen cmdlets uit de module geëxporteerd.
Als cmdletsToExport is ingesteld op alleen de Get-Example
cmdlet, wordt alleen de Get-Example
cmdlet beschikbaar gesteld wanneer u deze module importeert, zelfs als andere cmdlets zijn geëxporteerd door de hoofdmodule of geneste modules.
@{
CmdletsToExport = @(
'Get-Example'
)
}
Met CmdletsToExport ingesteld met een jokertekenreeks, wanneer u deze module importeert een cmdlet waarvan de naam eindigt Example
op beschikbaar wordt gesteld, zelfs als andere cmdlets zijn geëxporteerd als moduleleden door de hoofdmodule of geneste modules.
@{
CmdletsToExport = @(
'*Example'
)
}
VariablesToExport
Met deze instelling geeft u de variabelen op die door de module worden geëxporteerd. U kunt deze instelling gebruiken om de variabelen te beperken die door de module worden geëxporteerd. Variabelen kunnen worden verwijderd uit de lijst met geëxporteerde moduleleden, maar er kunnen geen variabelen aan de lijst worden toegevoegd.
Weergegeven als | |
---|---|
Invoertype | System.String[] |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Ja |
U kunt vermeldingen in deze instelling opgeven met jokertekens. Alle overeenkomende variabelen in de lijst met geëxporteerde moduleleden worden geëxporteerd.
Tip
Voor prestaties en detectie moet u altijd expliciet de variabelen vermelden die u in deze instelling wilt exporteren zonder jokertekens te gebruiken.
Wanneer u bijvoorbeeld een module importeert met deze instelling als commentaar, worden alle variabelen in de hoofdmodule en geneste modules geëxporteerd.
@{
# VariablesToExport = @()
}
Dit manifest is functioneel identiek om de instelling helemaal niet op te geven.
@{
VariablesToExport = '*'
}
Notitie
Als u het modulemanifest maakt met de New-ModuleManifest
opdracht en de parameter VariablesToExport niet opgeeft, heeft het gemaakte manifest deze instelling opgegeven als '*'
. Tenzij u het manifest bewerkt, worden alle variabelen uit de module geëxporteerd.
Wanneer u deze module importeert, zijn er geen variabelen beschikbaar als VariablesToExport als een lege matrix is ingesteld.
@{
VariablesToExport = @()
}
Als VariablesToExport is ingesteld op alleen de SomeExample
variabele, wordt bij het importeren van deze module alleen de $SomeExample
variabele beschikbaar gesteld, zelfs als andere variabelen zijn geëxporteerd door de hoofdmodule of geneste modules.
@{
VariablesToExport = @(
'SomeExample'
)
}
Met VariablesToExport ingesteld met een jokertekenreeks, wanneer u deze module importeert waarvan de naam eindigt Example
op beschikbaar wordt gesteld, zelfs als andere variabelen zijn geëxporteerd als moduleleden door de hoofdmodule of geneste modules.
@{
VariablesToExport = @(
'*Example'
)
}
DscResourcesToExport
Met deze instelling geeft u de DSC-resources op die door de module worden geëxporteerd. U kunt deze instelling gebruiken om de op klassen gebaseerde DSC-resources te beperken die door de module worden geëxporteerd. Dsc-resources kunnen worden verwijderd uit de lijst met geëxporteerde moduleleden, maar er kunnen geen DSC-resources aan de lijst worden toegevoegd.
Weergegeven als | |
---|---|
Invoertype | System.String[] |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Ja |
U kunt vermeldingen in deze instelling opgeven met jokertekens. Alle overeenkomende DSC-resources op basis van klassen in de module worden geëxporteerd.
Tip
Voor detectie moet u altijd expliciet alle DSC-resources vermelden die uw module exporteert.
Zie de documentatie voor DSC voor meer informatie over het ontwerpen en gebruiken van DSC-resources.
Dit manifest exporteert alle op klassen gebaseerde en op MOF gebaseerde DSC-resources die zijn gedefinieerd in de hoofdmodule en geneste modules.
@{
# DscResourcesToExport = @()
}
Met dit manifest worden alle OP MOF gebaseerde DSC-resources geëxporteerd die zijn gedefinieerd in de hoofdmodule en geneste modules, maar slechts één DSC-resource op basis van klasse, ExampleClassResource
.
@{
DscResourcesToExport = @(
'ExampleClassResource'
)
}
Met dit manifest worden alle DSC-resources geëxporteerd die het bevat. Zelfs als de op MOF gebaseerde resource niet wordt vermeld, zou de module deze nog steeds exporteren.
@{
DscResourcesToExport = @(
'ExampleClassResource'
'ExampleMofResourceFirst'
)
}
Modulelijst
Deze instelling is een informatieve inventarislijst van de modules die in deze module zijn opgenomen. Deze lijst heeft geen invloed op het gedrag van de module.
Weergegeven als | |
---|---|
Invoertype | System.String[] , System.Collections.Hashtable[] |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Nee |
Vermeldingen voor deze instelling kunnen een modulenaam, een volledige modulespecificatie of een pad naar een module of scriptbestand zijn.
Wanneer de waarde een pad is, kan het pad volledig of relatief zijn.
Wanneer de waarde een modulenaam of -specificatie is, zoekt PowerShell naar de PSModulePath voor de opgegeven module.
Een modulespecificatie is een hash-tabel met de volgende sleutels.
ModuleName
- Vereist. Hiermee geeft u de modulenaam.GUID
- Optioneel. Hiermee geeft u de GUID van de module.- Het is ook vereist om ten minste één van de drie onderstaande sleutels op te geven. De
RequiredVersion
sleutel kan niet worden gebruikt met deModuleVersion
ofMaximumVersion
sleutels. U kunt een acceptabel versiebereik voor de module definiëren door deModuleVersion
enMaximumVersion
sleutels samen op te geven.ModuleVersion
- Hiermee geeft u een minimaal acceptabele versie van de module.RequiredVersion
- Hiermee geeft u een exacte, vereiste versie van de module.MaximumVersion
- Hiermee geeft u de maximaal aanvaardbare versie van de module.
Notitie
RequiredVersion
is toegevoegd in Windows PowerShell 5.0.
MaximumVersion
is toegevoegd in Windows PowerShell 5.1.
Dit manifest bevat geen informatieve lijst met de modules die het bevat. Het kan al dan niet modules bevatten. Hoewel deze instelling niet is opgegeven, werken alle modules die worden vermeld in de instellingen RootModule, ScriptsToProcess of NestedModules , nog steeds normaal.
@{
# ModuleList = @()
}
Dit manifest declareert dat de enige modules die het bevat, zijn Example.psm1
en de submodules First.psm1
en Second.psm1
in de Submodules
map.
@{
ModuleList = @(
'Example.psm1'
'Submodules\First.psm1'
'Submodules\Second.psm1'
)
}
FileList
Deze instelling is een informatieve inventarislijst van de bestanden die in deze module zijn opgenomen. Deze lijst heeft geen invloed op het gedrag van de module.
Weergegeven als | |
---|---|
Invoertype | System.String[] |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Ja |
Vermeldingen voor deze instelling moeten het relatieve pad naar een bestand uit de map met het modulemanifest zijn.
Wanneer een gebruiker een manifest aanroept Get-Module
met deze instelling die is gedefinieerd, bevat de eigenschap FileList het volledige pad naar deze bestanden, waarbij het pad van de module wordt toegevoegd aan het relatieve pad van elke vermelding.
Dit manifest bevat geen lijst met de bestanden.
@{
# FileList = @()
}
Dit manifest declareert dat de enige bestanden die het bevat, worden vermeld in deze instelling.
@{
FileList = @(
'Example.psd1'
'Example.psm1'
'Assemblies\Example.dll'
'Scripts\Initialize.ps1'
'Submodules\First.psm1'
'Submodules\Second.psm1'
)
}
PrivateData
Met deze instelling definieert u een hashtabel met gegevens die beschikbaar zijn voor opdrachten of functies in het bereik van de hoofdmodule.
Weergegeven als | |
---|---|
Invoertype | System.Collections.Hashtable |
Vereist | PowerShell Gallery, Crescendo |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Nee |
Wanneer u een Crescendo-manifest exporteert om een nieuwe module te maken, Export-CrescendoModule
voegt u twee sleutels toe aan PrivateData
- CrescendoGenerated - tijdstempel toen de module werd geëxporteerd
- CrescendoVersion - de versie van Crescendo die wordt gebruikt om de module te exporteren
U kunt uw eigen sleutels toevoegen om metagegevens op te slaan die u wilt bijhouden. Sleutels die aan deze instelling zijn toegevoegd, zijn beschikbaar voor functies en cmdlets in de hoofdmodule met behulp van $MyInvocation.MyCommand.Module.PrivateData
. De hash-tabel is niet beschikbaar in het modulebereik zelf, alleen in cmdlets die u in de module definieert.
Dit manifest definieert bijvoorbeeld de key PublishedDate in PrivateData.
@{
PrivateData = @{
PublishedDate = '2022-06-01'
}
}
Cmdlets in de module hebben toegang tot deze waarde met de $MyInvocation
variabele.
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"
}
}
Zodra de module is geïmporteerd, gebruikt de functie de waarde uit PrivateData om te bepalen wanneer de module is gepubliceerd.
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
De onderliggende eigenschap PSData definieert een hash-tabel met waarden die ondersteuning bieden voor specifieke extensiescenario's.
Weergegeven als | |
---|---|
Invoertype | System.Collections.Hashtable |
Vereist | PowerShell Gallery, experimentele functies, Crescendo-modules |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Nee |
De onderliggende PSData-eigenschap wordt gebruikt voor de volgende scenario's:
- PowerShell Gallery: wanneer u een modulemanifest maakt met behulp van
New-ModuleManifest
de cmdlet, wordt de PSData-hashtabel vooraf ingevuld met tijdelijke aanduidingen die nodig zijn bij het publiceren van de module naar de PowerShell Gallery. Zie Pakketmanifestwaarden die van invloed zijn op de gebruikersinterface van de PowerShell Gallery voor meer informatie over modulemanifesten en het publiceren naar de PowerShell Gallery. - Experimentele functies: metagegevens over een experimentele functie worden bewaard in de eigenschap ExperimentalFeatures van PSData. De eigenschap ExperimentalFeatures is een matrix van hashtabellen die de naam en beschrijving van de functie bevatten. Zie Experimentele functies declareren in modules voor meer informatie.
- Crescendo-modules: wanneer u een Crescendo-manifest exporteert om een nieuwe module te maken,
Export-CrescendoModule
wordt de waardeCrescendoBuilt
toegevoegd aan de eigenschap PSData.Tags . U kunt deze tag gebruiken om modules te vinden in de PowerShell Gallery die zijn gemaakt met Crescendo. Zie Export-CrescendoModule voor meer informatie.
HelpInfoURI
Met deze instelling geeft u het internetadres van het XML-bestand HelpInfo voor de module op.
Weergegeven als | |
---|---|
Invoertype | System.String |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Nee |
De waarde van deze instelling moet een URI (Uniform Resource Identifier) zijn die begint met http of https.
Het XML-bestand helpinfo ondersteunt de Help-functie Updatable die is geïntroduceerd in PowerShell 3.0. Het bevat informatie over de locatie van downloadbare Help-bestanden voor de module en de versienummers van de nieuwste Help-bestanden voor elke ondersteunde landinstelling.
Zie about_Updatable_Help voor informatie over Help bijwerken. Zie Ondersteunende Help-informatie over het XML-bestand help voor Help voor Help-informatie over help die kan worden bijgewerkt.
Deze module biedt bijvoorbeeld ondersteuning voor help-ondersteuning die kan worden bijgewerkt.
@{
HelpInfoUri = 'http://https://go.microsoft.com/fwlink/?LinkID=603'
}
DefaultCommandPrefix
Met deze instelling geeft u een voorvoegsel op dat wordt voorafgegaan door de zelfstandige naamwoorden van alle opdrachten in de module wanneer ze in een sessie worden geïmporteerd. Voorvoegsels helpen conflicten met opdrachtnamen in de sessie van een gebruiker te voorkomen.
Weergegeven als | |
---|---|
Invoertype | System.String |
Vereist | Nee |
Waarde als de waarde is uitgeschakeld | $null |
Accepteert jokertekens | Nee |
Modulegebruikers kunnen dit voorvoegsel overschrijven door de parameter Voorvoegsel van de Import-Module
cmdlet op te geven.
Deze instelling is geïntroduceerd in PowerShell 3.0.
Wanneer dit manifest wordt geïmporteerd, hebben alle cmdlets die uit deze module zijn Example
geïmporteerd, voorafgegaan aan het zelfstandig naamwoord in hun naam. Wordt bijvoorbeeld Get-Item
geïmporteerd als Get-ExampleItem
.
@{
DefaultCommandPrefix = 'Example'
}