Prerelease-versies van scripts

Vanaf versie 1.6.0 bieden PowerShellGet en de PowerShell Gallery ondersteuning voor het taggen van versies groter dan 1.0.0 als een prerelease. Vóór deze functie waren prereleasepakketten beperkt tot een versie die begint met 0. Het doel van deze functies is om meer ondersteuning te bieden voor versieconventie van SemVer v1.0.0 zonder dat de compatibiliteit met eerdere versies 3 en hoger, of bestaande versies van PowerShellGet, wordt verbroken. Dit onderwerp is gericht op de scriptspecifieke functies. De equivalente functies voor modules vindt u in het onderwerp Prerelease-moduleversies . Met deze functies kunnen uitgevers een script identificeren als versie 2.5.0-alpha en later een productieklare versie 2.5.0 vrijgeven die de voorlopige versie vervangt.

Op hoog niveau zijn de prerelease-scriptfuncties onder andere:

  • Het achtervoegsel PrereleaseString toevoegen aan de versietekenreeks in het scriptmanifest. Wanneer de scripts worden gepubliceerd naar de PowerShell Gallery, worden deze gegevens uit het manifest geëxtraheerd en gebruikt om prereleasepakketten te identificeren.
  • Voor het verkrijgen van voorlopige pakketten moet de vlag AllowPrerelease worden toegevoegd aan de PowerShellGet-opdrachten Find-Script, Install-Script, Update-Script en Save-Script. Als de vlag niet is opgegeven, worden prereleasepakketten niet weergegeven.
  • Scriptversies die worden weergegeven door Find-Script, Get-InstalledScript en in de PowerShell Gallery worden weergegeven met de PrereleaseString, zoals in 2.5.0-alpha.

Details voor de functies vindt u hieronder.

Een scriptversie identificeren als een voorlopige versie

PowerShellGet-ondersteuning voor voorlopige versies is eenvoudiger voor scripts dan voor modules. Scriptversiebeheer wordt alleen ondersteund door PowerShellGet, dus er zijn geen compatibiliteitsproblemen die worden veroorzaakt door het toevoegen van de voorlopige versietekenreeks. Als u een script in de PowerShell Gallery wilt identificeren als een voorlopige versie, voegt u een prereleaseachtervoegsel toe aan een correct opgemaakte versietekenreeks in de metagegevens van het script.

Een voorbeeldsectie van een scriptmanifest met een voorlopige versie ziet er als volgt uit:

<#PSScriptInfo

.VERSION 3.2.1-alpha12

.GUID

...

#>

Als u een voorlopige versie-achtervoegsel wilt gebruiken, moet de versietekenreeks voldoen aan de volgende vereisten:

  • Een prerelease-achtervoegsel kan alleen worden opgegeven wanneer de versie 3 segmenten is voor Major.Minor.Build. Dit komt overeen met SemVer v1.0.0
  • Het voorvoegsel voorrelease is een tekenreeks die begint met een afbreekstreepje en mogelijk ASCII-alfanumerieke tekst [0-9A-Za-z-] bevat
  • Alleen tekenreeksen van SemVer v1.0.0 worden op dit moment ondersteund, dus het achtervoegsel voor prerelease mag geen punt of + [.+] bevatten, die zijn toegestaan in SemVer 2.0
  • Voorbeelden van ondersteunde PrereleaseString-tekenreeksen zijn: -alpha, -alpha1, -BETA, -update20171020

Invloed van voorlopige versiebeheer op sorteervolgorde en installatiemappen

Sorteervolgordewijzigingen wanneer u een voorlopige versie gebruikt, wat belangrijk is bij het publiceren naar de PowerShell Gallery en bij het installeren van scripts met behulp van PowerShellGet-opdrachten. Als er twee scriptsversies met het versienummer bestaan, is de sorteervolgorde gebaseerd op het tekenreeksgedeelte na het afbreekstreepje. Versie 2.5.0-alpha is dus kleiner dan 2.5.0-bèta, wat kleiner is dan 2.5.0-gamma. Als twee scripts hetzelfde versienummer hebben en slechts één een PrereleaseString heeft, wordt ervan uitgegaan dat het script zonder het achtervoegsel prerelease de versie is die gereed is voor productie en wordt deze gesorteerd als een grotere versie dan de voorlopige versie. Als u bijvoorbeeld releases 2.5.0 en 2.5.0-beta vergelijkt, wordt de versie 2.5.0 beschouwd als de grootste van de twee.

Bij het publiceren naar de PowerShell Gallery moet de versie van het script dat wordt gepubliceerd standaard een hogere versie hebben dan alle eerder gepubliceerde versies in de PowerShell Gallery. Een uitgever kan versie 2.5.0-alpha bijwerken met 2.5.0-bèta of met 2.5.0 (zonder voorvervoegsel).

Voorlopige pakketten zoeken en verkrijgen met behulp van PowerShellGet-opdrachten

Voor het verwerken van prerelease-pakketten met behulp van PowerShellGet Find-Script, Install-Script, Update-Script en Save-Script opdrachten moet de vlag -AllowPrerelease worden toegevoegd. Als -AllowPrerelease is opgegeven, worden prerelease-pakketten opgenomen als deze aanwezig zijn. Als de vlag -AllowPrerelease niet is opgegeven, worden prereleasepakketten niet weergegeven.

De enige uitzonderingen hierop in de PowerShellGet-scriptopdrachten zijn Get-InstalledScript en sommige gevallen met Uninstall-Script.

  • Get-InstalledScript geeft altijd automatisch de vooraf uitgebrachte informatie weer in de versietekenreeks als deze aanwezig is.
  • Uninstall-Script verwijdert standaard de meest recente versie van een script als er geen versie is opgegeven. Dat gedrag is niet gewijzigd. Als er echter een voorlopige versie is opgegeven met behulp van -RequiredVersion, -AllowPrerelease is vereist.

Voorbeelden

# Assume the PowerShell Gallery has TestPackage versions 1.8.0 and 1.9.0-alpha.
# If -AllowPrerelease is not specified, only version 1.8.0 will be returned.
C:\windows\system32> Find-Script TestPackage

Version        Name                                Repository           Description
-------        ----                                ----------           -----------
1.8.0          TestPackage                         PSGallery            Package used to validate changes to the PowerShe...

C:\windows\system32> Find-Script TestPackage -AllowPrerelease

Version        Name                                Repository           Description
-------        ----                                ----------           -----------
1.9.0-alpha    TestPackage                         PSGallery            Package used to validate changes to PowerShe...

# To install a prerelease, you must specify -AllowPrerelease. Specifying a prerelease version string is not sufficient.

C:\windows\system32> Install-Script TestPackage -RequiredVersion 1.9.0-alpha

PackageManagement\Find-Package : No match was found for the specified search criteria and script name 'TestPackage'.
Try Get-PSRepository to see all available registered script 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

# The previous command failed because -AllowPrerelease was not specified.
# Adding -AllowPrerelease will result in success.

C:\windows\system32> Install-Script TestPackage -RequiredVersion 1.9.0-alpha -AllowPrerelease
C:\windows\system32> Get-InstalledScript TestPackage

Version         Name                                Repository           Description
-------         ----                                ----------           -----------
1.9.0-alpha     TestPackage                         PSGallery            Package used to validate changes to PowerShe...

# Note that Get-InstalledScript shows the prerelease version.
# If -RequiredVersion is not specified, all installed scripts will be displayed by Get-InstalledScript

Uninstall-Script verwijdert de huidige versie van een script wanneer -RequiredVersion niet is opgegeven. Als -RequiredVersion is opgegeven en een prerelease is, moet -AllowPrerelease worden toegevoegd aan de opdracht.

C:\windows\system32> Get-InstalledScript TestPackage

Version         Name                                Repository           Description
-------         ----                                ----------           -----------
1.9.0-alpha     TestPackage                         PSGallery            Package used to validate changes to PowerShe...

C:\windows\system32> Uninstall-Script TestPackage -RequiredVersion 1.9.0-alpha
Uninstall-Script: The '-AllowPrerelease' parameter must be specified when using the Prerelease string in
MinimumVersion, MaximumVersion, or RequiredVersion.
At line:1 char:1
+ Uninstall-Script TestPackage -RequiredVersion 1.9.0-beta
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Uninstall-Script], ArgumentException
    + FullyQualifiedErrorId : AllowPrereleaseRequiredToUsePrereleaseStringInVersion,Uninstall-script


C:\windows\system32> Uninstall-Script TestPackage -RequiredVersion 1.9.0-alpha -AllowPrerelease
# Since script versions are not installed side-by-side, the above could be simply "Uninstall-Script TestPackage"

C:\windows\system32> Get-Installedscript TestPackage
PackageManagement\Get-Package : No match was found for the specified search criteria and script names 'testpackage'.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.5.0.0\PSModule.psm1:4088 char:9
+         PackageManagement\Get-Package @PSBoundParameters | Microsoft. ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Microsoft.Power...lets.GetPackage:GetPackage) [Get-Package], Exception
    + FullyQualifiedErrorId : NoMatchFound,Microsoft.PowerShell.PackageManagement.Cmdlets.GetPackage

Meer informatie