Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Vanaf versie 1.6.0 bieden PowerShellGet en de PowerShell-galerie ondersteuning voor het taggen van versies groter dan 1.0.0 als een prerelease. Vóór deze functie waren prerelease-pakketten beperkt tot een versie die begon met 0. Het doel van deze functies is om meer ondersteuning te bieden voor de versiebeheerconventie van SemVer v1.0.0 zonder de achterwaartse compatibiliteit met PowerShell-versies 3 en hoger of bestaande versies van PowerShellGet te verbreken. In dit onderwerp wordt ingegaan op de modulespecifieke functies. De equivalente functies voor scripts zijn te vinden in het onderwerp Prerelease-versies van scripts . Met behulp van deze functies kunnen uitgevers een module of script identificeren als versie 2.5.0-alpha en later een productieklare versie 2.5.0 uitbrengen die de prerelease-versie vervangt.
Op een hoog niveau omvatten de functies van de prerelease-module:
- Als u een Prerelease-tekenreeks toevoegt aan de PSData-sectie van het modulemanifest, wordt de module geïdentificeerd als een Prerelease-versie. Wanneer de module wordt gepubliceerd naar de PowerShell-galerie, worden deze gegevens uit het manifest geëxtraheerd en gebruikt om prerelease-pakketten te identificeren.
- Voor het verkrijgen van prerelease-pakketten moet een vlag worden toegevoegd
-AllowPrereleaseaan de PowerShellGet-opdrachtenFind-Module,Install-Module,Update-Module, enSave-Module. Als de vlag niet is opgegeven, worden prerelease-pakketten niet weergegeven. - Moduleversies die worden weergegeven door
Find-Module,Get-InstalledModuleen in de PowerShell-galerie, worden weergegeven als één tekenreeks met de Prerelease-tekenreeks toegevoegd, zoals in 2.5.0-alpha.
Details voor de functies zijn hieronder opgenomen.
Deze wijzigingen hebben geen invloed op de ondersteuning voor moduleversies die is ingebouwd in PowerShell en zijn compatibel met PowerShell 3.0, 4.0 en 5.
Een moduleversie identificeren als een pre-release
PowerShellGet-ondersteuning voor prerelease-versies vereist het gebruik van twee velden in het modulemanifest:
- De ModuleVersion die in het modulemanifest is opgenomen, moet een 3-delige versie zijn als een prerelease-versie wordt gebruikt en moet voldoen aan bestaande PowerShell-versiebeheer. Het versieformaat zou A.B.C zijn, waarbij A, B en C allemaal gehele getallen zijn.
- De Prerelease-tekenreeks wordt gespecificeerd in het modulemanifest, in de PSData-sectie van PrivateData.
Gedetailleerde vereisten voor de Prerelease-tekenreeks staan hieronder.
Een voorbeeldsectie van een modulemanifest waarin een module wordt gedefinieerd als een prerelease, ziet er als volgt uit:
@{
ModuleVersion = '2.5.0'
#---
PrivateData = @{
PSData = @{
Prerelease = 'alpha'
}
}
}
De gedetailleerde vereisten voor Prerelease-tekenreeksen zijn:
- Prerelease-tekenreeks kan alleen worden opgegeven als de ModuleVersion 3 segmenten is voor Major.Minor.Build. Dit komt overeen met SemVer v1.0.0.
- Een koppelteken is het scheidingsteken tussen het buildnummer en de Prerelease-tekenreeks. Een koppelteken mag alleen als eerste teken in de Prerelease-tekenreeks worden opgenomen.
- De Prerelease-tekenreeks mag alleen ASCII-alfanumerieke tekens bevatten [0-9A-Za-z-]. Het is een goede gewoonte om de Prerelease-tekenreeks te beginnen met een alfa-teken, omdat het dan gemakkelijker is om te zien dat dit een Prerelease-versie is bij het scannen van een lijst met pakketten.
- Op dit moment worden alleen SemVer v1.0.0 prerelease-tekenreeksen ondersteund. De prerelease-tekenreeks mag geen punt of + [.+] bevatten, die zijn toegestaan in SemVer 2.0.
- Voorbeelden van ondersteunde Prerelease-tekenreeksen zijn: -alpha, -alpha1, -BETA, -update20171020
Impact van prerelease-versiebeheer op de sorteervolgorde en installatiemappen
Wijzigingen in de sorteervolgorde wijzigen bij het gebruik van een prerelease-versie, wat belangrijk is bij het publiceren naar de PowerShell-galerie en bij het installeren van modules met behulp van PowerShellGet-opdrachten. Als de Prerelease-tekenreeks is opgegeven voor twee modules, wordt de sorteervolgorde gebaseerd op het tekenreeksgedeelte na het koppelteken. Dus, versie 2.5.0-alpha is minder dan 2.5.0-beta, wat minder is dan 2.5.0-gamma. Als twee modules dezelfde ModuleVersion hebben en slechts één module een Prerelease-tekenreeks heeft, wordt aangenomen dat de module zonder de Prerelease-tekenreeks de productieklare versie is en wordt deze gesorteerd als een grotere versie dan de Prerelease-versie (die de Prerelease-tekenreeks bevat). Als je bijvoorbeeld releases 2.5.0 en 2.5.0-bèta vergelijkt, wordt de 2.5.0-versie als de grootste van de twee beschouwd.
Wanneer u publiceert naar de PowerShell-galerie, moet de versie van de module die wordt gepubliceerd standaard een grotere versie hebben dan een eerder gepubliceerde versie in de PowerShell-galerie.
Prerelease-pakketten zoeken en verkrijgen met behulp van PowerShellGet-opdrachten
Voor het omgaan met prerelease-pakketten met behulp van PowerShellGet Find-Module, Install-Module, Update-Module en Save-Module opdrachten moet de -AllowPrerelease-vlag worden toegevoegd. Als -AllowPrerelease is opgegeven, worden prerelease-pakketten meegeleverd als deze aanwezig zijn. Als -AllowPrerelease vlag niet is opgegeven, worden prerelease-pakketten niet weergegeven.
De enige uitzonderingen hierop in de PowerShellGet-moduleopdrachten zijn Get-InstalledModule en sommige gevallen met Uninstall-Module.
- Get-InstalledModule zal altijd automatisch de prerelease-informatie tonen in de versiereeks voor modules.
- Uninstall-Module wordt standaard de meest recente versie van een module verwijderd als er geen versie is opgegeven. Dat gedrag is niet veranderd. Als er echter een prerelease-versie is opgegeven met -RequiredVersion, is -AllowPrerelease vereist.
Voorbeelden
Stel dat de PowerShell Gallery testPackage-moduleversies 1.8.0 en 1.9.0-alpha heeft. Als -AllowPrerelease dit niet is opgegeven, wordt alleen versie 1.8.0 geretourneerd.
find-module TestPackage
Version Name Repository Description
------- ---- ---------- -----------
1.8.0 TestPackage PSGallery Package used to validate changes to the PowerShe...
find-module TestPackage -AllowPrerelease
Version Name Repository Description
------- ---- ---------- -----------
1.9.0-alpha TestPackage PSGallery Package used to validate changes to the PowerShe...
Als u een prerelease wilt installeren, geeft u altijd -AllowPrerelease op. Het opgeven van een tekenreeks voor de prereleaseversie is niet voldoende.
Install-module TestPackage -RequiredVersion 1.9.0-alpha
PackageManagement\Find-Package : No match was found for the specified search criteria and module name 'TestPackage'.
Try Get-PSRepository to see all available registered module repositories.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.6.0\PSModule.psm1:1455 char:3
+ PackageManagement\Find-Package @PSBoundParameters | Microsoft ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Microsoft.Power...ets.FindPackage:FindPackage) [Find-Package], Exception
+ FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.FindPackage
De vorige opdracht is mislukt omdat -AllowPrerelease niet was opgegeven. Toevoegen -AllowPrerelease zal resulteren in succes.
Install-module TestPackage -RequiredVersion 1.9.0-alpha -AllowPrerelease
Get-InstalledModule TestPackage
Version Name Repository Description
------- ---- ---------- -----------
1.9.0-alpha TestPackage PSGallery Package used to validate changes to the PowerShe...
Side-by-side installatie van versies van een module die alleen verschillen vanwege de opgegeven prerelease, wordt niet ondersteund. Bij het installeren van een module met behulp van PowerShellGet worden verschillende versies van dezelfde module naast elkaar geïnstalleerd door een mapnaam te maken met behulp van de ModuleVersion. De ModuleVersion, zonder de prerelease-string, wordt gebruikt voor de mapnaam. Als een gebruiker MyModule versie 2.5.0-alpha installeert, wordt deze in de MyModule\2.5.0 map geïnstalleerd. Als de gebruiker vervolgens 2.5.0-bèta installeert, zal de 2.5.0-bètaversie de inhoud van de map MyModule\2.5.0overschrijven. Een voordeel van deze aanpak is dat het niet nodig is om de prerelease-versie te verwijderen na het installeren van de productieklare versie. Het onderstaande voorbeeld laat zien wat u kunt verwachten:
C:\windows\system32> Get-InstalledModule TestPackage -AllVersions
Version Name Repository Description
------- ---- ---------- -----------
1.9.0-alpha TestPackage PSGallery Package used to validate changes to the PowerShe...
1.8.0 TestPackage PSGallery Package used to validate changes to the PowerShe...
1.1.3.2 TestPackage PSGallery Package used to validate changes to the PowerShe...
C:\windows\system32> find-module TestPackage -AllowPrerelease
Version Name Repository Description
------- ---- ---------- -----------
1.9.0-beta TestPackage PSGallery Package used to validate changes to the PowerShe...
C:\windows\system32> Update-Module TestPackage -AllowPrerelease
C:\windows\system32> Get-InstalledModule TestPackage -AllVersions
Version Name Repository Description
------- ---- ---------- -----------
1.9.0-beta TestPackage PSGallery Package used to validate changes to the PowerShe...
1.8.0 TestPackage PSGallery Package used to validate changes to the PowerShe...
1.1.3.2 TestPackage PSGallery Package used to validate changes to the PowerShe...
Uninstall-Module zal de nieuwste versie van een module verwijderen wanneer -RequiredVersion niet wordt meegeleverd. Als -RequiredVersion is opgegeven en een prerelease is, moet -AllowPrerelease aan de opdracht worden toegevoegd.
C:\windows\system32> Get-InstalledModule TestPackage -AllVersions
Version Name Repository Description
------- ---- ---------- -----------
2.0.0-alpha1 TestPackage PSGallery Package used to validate changes to the PowerShe...
1.9.0-beta TestPackage PSGallery Package used to validate changes to the PowerShe...
1.8.0 TestPackage PSGallery Package used to validate changes to the PowerShe...
1.1.3.2 TestPackage PSGallery Package used to validate changes to the PowerShe...
C:\windows\system32> Uninstall-Module TestPackage -RequiredVersion 1.9.0-beta
Uninstall-Module : The '-AllowPrerelease' parameter must be specified when using the Prerelease string in
MinimumVersion, MaximumVersion, or RequiredVersion.
At line:1 char:1
+ Uninstall-Module TestPackage -RequiredVersion 1.9.0-beta
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Uninstall-Module], ArgumentException
+ FullyQualifiedErrorId : AllowPrereleaseRequiredToUsePrereleaseStringInVersion,Uninstall-Module
C:\windows\system32> Uninstall-Module TestPackage -RequiredVersion 1.9.0-beta -AllowPrerelease
C:\windows\system32> Get-InstalledModule TestPackage -AllVersions
Version Name Repository Description
------- ---- ---------- -----------
2.0.0-alpha1 TestPackage PSGallery Package used to validate changes to the PowerShe...
1.8.0 TestPackage PSGallery Package used to validate changes to the PowerShe...
1.1.3.2 TestPackage PSGallery Package used to validate changes to the PowerShe...
C:\windows\system32> Uninstall-Module TestPackage
C:\windows\system32> Get-InstalledModule TestPackage -AllVersions
Version Name Repository Description
------- ---- ---------- -----------
1.8.0 TestPackage PSGallery Package used to validate changes to the PowerShe...
1.1.3.2 TestPackage PSGallery Package used to validate changes to the PowerShe...
Meer informatie
PowerShell Gallery