Versioni non definitive degli scriptPrerelease versions of scripts


A partire dalla versione 1.6.0, PowerShellGet e PowerShell Gallery consentono di contrassegnare le versioni successive alla versione 1.0.0 come versioni non definitive.Starting with version 1.6.0, PowerShellGet and the PowerShell Gallery provide support for tagging versions greater than 1.0.0 as a prerelease. In precedenza, i pacchetti non definitivi potevano avere solo una versione che iniziava con 0.Prior to this feature, prerelease packages were limited to having a version beginning with 0. L'obiettivo di queste funzionalità è quello di offrire un maggior supporto per la convenzione di controllo delle versioni SemVer v1.0.0 senza interrompere la compatibilità con le versioni precedenti con PowerShell versioni 3 e successive o le versioni esistenti di PowerShellGet.The goal of these features is to provide greater support for SemVer v1.0.0 versioning convention without breaking backwards compatibility with PowerShell versions 3 and above, or existing versions of PowerShellGet. Questo argomento illustra le funzionalità specifiche degli script.This topic focuses on the script-specific features. Le funzionalità equivalenti per i moduli sono descritte nell'argomento Versioni di modulo non definitive.The equivalent features for modules are in the Prerelease Module Versions topic. Usando queste funzionalità, i server di pubblicazione possono identificare uno script come versione 2.5.0-alpha e rilasciare in seguito una versione pronta per la produzione 2.5.0 che sostituisce la versione non definitiva.Using these features, publishers can identify a script as version 2.5.0-alpha, and later release a production-ready version 2.5.0 that supersedes the prerelease version.

In generale, le funzionalità di script non definitivo includono:At a high level, the prerelease script features include:

  • Aggiunta di un suffisso PrereleaseString alla stringa di versione nel manifesto dello script.Adding a PrereleaseString suffix to the version string in the script manifest. Quando gli script vengono pubblicati in PowerShell Gallery, i dati vengono estratti dal manifesto e usati per identificare i pacchetti in versione non definitiva.When the scripts is published to the PowerShell Gallery, this data is extracted from the manifest, and used to identify prerelease packages.
  • L'acquisizione di pacchetti in versione non definitiva richiede l'aggiunta del flag -AllowPrerelease ai comandi di PowerShellGet Find-Script, Install-Script, Update-Script e Save-Script.Acquiring prerelease packages requires adding -AllowPrerelease flag to the PowerShellGet commands Find-Script, Install-Script, Update-Script, and Save-Script. Se il flag non viene specificato, i pacchetti in versione non definitiva non vengono visualizzati.If the flag is not specified, prerelease packages will not be shown.
  • Le versioni di script visualizzate da Find-Script, Get-InstalledScript e in PowerShell Gallery vengono visualizzate con PrereleaseString, come in 2.5.0-alpha.Script versions displayed by Find-Script, Get-InstalledScript, and in the PowerShell Gallery will be displayed with the PrereleaseString, as in 2.5.0-alpha.

Di seguito sono descritti i dettagli delle funzionalità.Details for the features are included below.

Identificazione di una versione di script come versione non definitivaIdentifying a script version as a prerelease

Il supporto di PowerShellGet per le versioni non definitive è più semplice per gli script rispetto ai moduli.PowerShellGet support for prerelease versions is easier for scripts than modules. Poiché il controllo delle versioni degli script è supportato solo da PowerShellGet, non si verificano problemi di compatibilità causati dall'aggiunta della stringa di versione non definitiva.Script versioning is only supported by PowerShellGet, so there are no compatibility issues caused by adding the prerelease string. Per identificare uno script in PowerShell Gallery come versione non definitiva, aggiungere un suffisso di versione non definitiva a una stringa di versione formattata correttamente nei metadati dello script.To identify a script in the PowerShell Gallery as a prerelease, add a prerelease suffix to a properly-formatted version string in the script metadata.

Una sezione di esempio del manifesto di uno script con una versione non definitiva apparirà come segue:An example section of a script manifest with a prerelease version would look like the following:

<#PSScriptInfo

.VERSION 3.2.1-alpha12

.GUID

...

#>

Per usare un suffisso di versione non definitiva, la stringa di versione deve soddisfare i requisiti seguenti:To use a prerelease suffix, the version string must meet the following requirements:

  • È possibile specificare un suffisso di versione non definitiva solo quando la versione è 3 segmenti per Major.Minor.Build.A prerelease suffix may only be specified when the Version is 3 segments for Major.Minor.Build. Ciò è conforme alla convenzione SemVer v1.0.0This aligns with SemVer v1.0.0
  • Il suffisso di versione non definitiva è una stringa che inizia con un segno meno e può contenere caratteri alfanumerici ASCII [0-9A-Za-z-]The prerelease suffix is a string which begins with a hyphen, and may contain ASCII alphanumerics [0-9A-Za-z-]
  • Poiché attualmente sono supportate solo stringhe di versione non definitiva SemVer v1.0.0, il suffisso di versione non definitiva non deve contenere punti o + [. +], consentiti in SemVer 2.0Only SemVer v1.0.0 prerelease strings are supported at this time, so the prerelease suffix must not contain either period or + [.+], which are allowed in SemVer 2.0
  • Esempi di stringhe PrereleaseString supportate includono: -alpha, -alpha1, -BETA, -update20171020Examples of supported PrereleaseString strings are: -alpha, -alpha1, -BETA, -update20171020

Impatto del controllo delle versioni non definitive sull'ordinamento e sulle cartelle di installazionePrerelease versioning impact on sort order and installation folders

Quando viene usata una versione non definitiva l'ordinamento viene modificato, un aspetto importante durante la pubblicazione in PowerShell Gallery e l'installazione di script con i comandi di PowerShellGet.Sort order changes when using a prerelease version, which is important when publishing to the PowerShell Gallery, and when installing scripts using PowerShellGet commands. Se sono presenti due versioni di script con numero di versione, l'ordinamento è basato sulla parte della stringa che segue il segno meno.If two scripts versions with the version number exist, the sort order is based on the string portion following the hyphen. Di conseguenza, la versione 2.5.0-alpha è precedente alla versione 2.5.0-beta che è a sua volta precedente alla versione 2.5.0-gamma.So, version 2.5.0-alpha is less than 2.5.0-beta, which is less than 2.5.0-gamma. Se due script hanno lo stesso numero di versione e uno solo include PrereleaseString, lo script senza il suffisso di versione non definitiva viene considerato la versione pronta per la produzione e viene ordinato come versione successiva alla versione non definitiva.If two scripts have the same version number, and only one has a PrereleaseString, the script without the prerelease suffix is assumed to be the production-ready version and will be sorted as a greater version than the prerelease version. Ad esempio, quando viene eseguito il confronto delle versioni 2.5.0 e 2.5.0-beta, la versione 2.5.0 viene considerata la più recente.As an example, when comparing releases 2.5.0 and 2.5.0-beta, the 2.5.0 version will be considered the greater of the two.

Durante la pubblicazione in PowerShell Gallery, per impostazione predefinita la versione dello script in fase di pubblicazione deve essere successiva a qualsiasi versione pubblicata precedentemente presente in PowerShell Gallery.When publishing to the PowerShell Gallery, by default the version of the script being published must have a greater version than any previously-published version that is in the PowerShell Gallery. Un server di pubblicazione può aggiornare la versione 2.5.0-alpha con la versione 2.5.0-beta o con la versione 2.5.0 (senza suffisso di versione non definitiva).A publisher may update version 2.5.0-alpha with 2.5.0-beta, or with 2.5.0 (with no prerelease suffix).

Ricerca e acquisizione di pacchetti in versione non definitiva mediante i comandi di PowerShellGetFinding and acquiring prerelease packages using PowerShellGet commands

L'uso di pacchetti in versione non definitiva con i comandi di PowerShellGet Find-Script, Install-Script, Update-Script e Save-Script richiede l'aggiunta del flag -AllowPrerelease.Dealing with prerelease packages using PowerShellGet Find-Script, Install-Script, Update-Script, and Save-Script commands requires adding the -AllowPrerelease flag. Se il flag -AllowPrerelease è specificato, i pacchetti in versione non definitiva verranno inclusi, se presenti.If -AllowPrerelease is specified, prerelease packages will be included if they are present. Se il flag -AllowPrerelease non è specificato, i pacchetti in versione non definitiva non verranno visualizzati.If -AllowPrerelease flag is not specified, prerelease packages will not be shown.

Le uniche eccezioni nei comandi di script di PowerShellGet sono rappresentate da Get-InstalledScript e da alcuni casi di utilizzo di Uninstall-Script.The only exceptions to this in the PowerShellGet script commands are Get-InstalledScript, and some cases with Uninstall-Script.

  • Get-InstalledScript visualizza sempre automaticamente le informazioni di versione non definitiva nella stringa di versione, se presente.Get-InstalledScript always will automatically show the prerelease information in the version string if it is present.
  • Uninstall-Script disinstalla per impostazione predefinita la versione più recente di uno script, se non è specificata alcuna versione.Uninstall-Script will by default uninstall the most recent version of a script, if no version is specified. Questo comportamento non è stato modificato.That behavior has not changed. Tuttavia, se viene specificata una versione non definitiva con -RequiredVersion, è necessario specificare -AllowPrerelease.However, if a prerelease version is specified using -RequiredVersion, -AllowPrerelease will be required.

EsempiExamples

# 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 rimuove la versione corrente di uno script quando non viene specificato -RequiredVersion.Uninstall-Script will remove the current version of a script when -RequiredVersion is not supplied. Se -RequiredVersion è specificato e si tratta di una versione non definitiva, è necessario aggiungere -AllowPrerelease al comando.If -RequiredVersion is specified, and is a prerelease, -AllowPrerelease must be added to the command.

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

Altre informazioniMore details