Delen via


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 is No, is het vereist voor geen van beide. Als dat zo is PowerShell 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.'
}

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.0op, 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.0op, 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, , MSILX86, IA64, , , Amd64Arm
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 Amd64op, 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 de ModuleVersion of MaximumVersion sleutels. U kunt een acceptabel versiebereik voor de module definiëren door de ModuleVersion en MaximumVersion 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 de ModuleVersion of MaximumVersion sleutels. U kunt een acceptabel versiebereik voor de module definiëren door de ModuleVersion en MaximumVersion 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 de ModuleVersion of MaximumVersion sleutels. U kunt een acceptabel versiebereik voor de module definiëren door de ModuleVersion en MaximumVersion 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'
    )
}

Bestandenoverzicht

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 waarde CrescendoBuilt 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'
}

Zie ook