Wersje wstępne skryptówPrerelease versions of scripts

Począwszy od wersji 1.6.0 modułu PowerShellGet oraz spełnione galerii programu PowerShell zapewniają obsługę tagowania w wersjach nowszych niż 1.0.0 jako wersji wstępnej.Starting with version 1.6.0, PowerShellGet and the PowerShell Gallery provide support for tagging versions greater than 1.0.0 as a prerelease. Przed tą funkcją pakiety w wersjach wstępnych były korzystać z wersji począwszy od 0.Prior to this feature, prerelease packages were limited to having a version beginning with 0. Celem tych funkcji jest zapewniają lepsze wsparcie 1.0.0 SemVer Konwencji wersji bez przerywania wstecznej zgodności przy użyciu programu PowerShell 3 i powyżej lub istniejącej wersji programu 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. Ten temat koncentruje się na funkcji specyficznych dla skryptu.This topic focuses on the script-specific features. Równoważne funkcje dla modułów znajdują się w wersje modułu wersję wstępną tematu.The equivalent features for modules are in the Prerelease Module Versions topic. Korzystając z tych funkcji, wydawców można skrypt jako 2.5.0-alpha wersji i później wydanej wersji gotowe do produkcji 2.5.0, która zastępuje wersję wstępną.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.

Na wysokim poziomie funkcje wersji wstępnej skryptu obejmują:At a high level, the prerelease script features include:

  • Dodanie do ciąg wersji w manifeście skrypt sufiksu PrereleaseString.Adding a PrereleaseString suffix to the version string in the script manifest. Po opublikowaniu skrypty w galerii programu PowerShell te dane są wyodrębniane z manifestu i używany do identyfikowania pakiety w wersjach wstępnych.When the scripts is published to the PowerShell Gallery, this data is extracted from the manifest, and used to identify prerelease packages.
  • Pobieranie pakietów wydań wstępnych wymaga dodanie flagi - AllowPrerelease poleceń modułu PowerShellGet Find-Script skrypt instalacji skryptu aktualizacji i Zapisz skrypt.Acquiring prerelease packages requires adding -AllowPrerelease flag to the PowerShellGet commands Find-Script, Install-Script, Update-Script, and Save-Script. Jeśli nie określono flagę, pakiety w wersjach wstępnych nie będą wyświetlane.If the flag is not specified, prerelease packages will not be shown.
  • Wersje skryptu wyświetlane przez Find-Script, Get-InstalledScript i w galerii programu PowerShell będą wyświetlane z PrereleaseString, tak jak 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.

Poniżej znajdują się szczegółowe informacje dla funkcji.Details for the features are included below.

Identyfikowanie wersji skryptu jako wersji wstępnejIdentifying a script version as a prerelease

Obsługa modułu PowerShellGet wersje wstępne jest łatwiejsze w przypadku skryptów niż moduły.PowerShellGet support for prerelease versions is easier for scripts than modules. Przechowywanie wersji skrypt jest obsługiwany tylko modułu PowerShellGet, więc nie ma żadnych problemów ze zgodnością spowodowane przez dodanie ciągu wersji wstępnej.Script versioning is only supported by PowerShellGet, so there are no compatibility issues caused by adding the prerelease string. Aby określić skrypt w galerii programu PowerShell, zgodnie z wersji wstępnej, należy dodać sufiks wersji wstępnej do wersji poprawnie sformatowany ciąg znaków w metadanych skryptów.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.

Przykład części manifestu skryptu za pomocą wersji wstępnej powinien wyglądać następująco:An example section of a script manifest with a prerelease version would look like the following:

<#PSScriptInfo

.VERSION 3.2.1-alpha12

.GUID

...

#>

Aby użyć sufiks wersji wstępnej, ciąg wersji musi spełniać następujące wymagania:To use a prerelease suffix, the version string must meet the following requirements:

  • Sufiks wersji wstępnej może być określona tylko, gdy wersja jest 3 segmenty dla główna.pomocnicza.kompilacja.A prerelease suffix may only be specified when the Version is 3 segments for Major.Minor.Build. Jest to zgodne z 1.0.0 SemVerThis aligns with SemVer v1.0.0
  • Wstępna sufiks jest to ciąg, który rozpoczyna się łącznikiem i może zawierać znaki alfanumeryczne 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-]
  • Tylko ciągi wstępna wersja 1.0.0 SemVer są obsługiwane w tej chwili więc sufiks wersji wstępnej nie zawierać albo okres lub + [. +], mogą SemVer w wersji 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
  • Przykłady obsługiwanych ciągów PrereleaseString:-alfa, - 1,-BETA, - update20171020Examples of supported PrereleaseString strings are: -alpha, -alpha1, -BETA, -update20171020

Wpływ wersji wstępnej w folderach instalacji i kolejność sortowaniaPrerelease versioning impact on sort order and installation folders

Kolejność sortowania zmienia się podczas korzystania z wersji wstępnej, co jest ważne w przypadku publikowania w galerii programu PowerShell, a podczas instalowania skryptów przy użyciu poleceń modułu 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. Jeśli dwa skrypty w wersji z numerem wersji istnieją, kolejność sortowania jest oparty na fragment ciągu, postępując łącznika.If two scripts versions with the version number exist, the sort order is based on the string portion following the hyphen. Dlatego 2.5.0-alpha wersji jest mniejszy niż 2.5.0-beta, która jest mniejsza niż 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. Jeśli dwa skrypty mają ten sam numer wersji, i tylko jeden PrereleaseString, skrypt bez sufiks wersji wstępnej zakłada, że wersja gotowe do produkcji i będą sortowane jako nowszej wersji niż wersja wstępna Wersja.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. Na przykład podczas porównywania zwalnia 2.5.0 i 2.5.0-beta, 2.5.0 wersji będą uznawane za większa niż dwa.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.

Publikowanie w galerii programu PowerShell, domyślnie wersja skryptu publikacji musi mieć nieco większa niż wersja wszystkie wcześniej publikowane w galerii programu PowerShell.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. Wydawca może aktualizować 2.5.0-alpha wersji 2.5.0-beta lub z 2.5.0 (sufiksem nie wstępnej).A publisher may update version 2.5.0-alpha with 2.5.0-beta, or with 2.5.0 (with no prerelease suffix).

Znajdowanie i Uzyskiwanie pakietów wydań wstępnych przy użyciu poleceń modułu PowerShellGetFinding and acquiring prerelease packages using PowerShellGet commands

Obsługa pakietów wydań wstępnych przy użyciu skryptu-PowerShellGet Find-Script, skrypt instalacji aktualizacji, a polecenia Save-Script wymaga dodanie flagi - AllowPrerelease.Dealing with prerelease packages using PowerShellGet Find-Script, Install-Script, Update-Script, and Save-Script commands requires adding the -AllowPrerelease flag. Jeśli określono - AllowPrerelease, pakiety w wersjach wstępnych zostaną dołączone, jeśli są obecne.If -AllowPrerelease is specified, prerelease packages will be included if they are present. Jeśli nie określono flagę - AllowPrerelease, pakiety w wersjach wstępnych nie będą wyświetlane.If -AllowPrerelease flag is not specified, prerelease packages will not be shown.

Jedynym wyjątkiem od tej w poleceniach skryptu PowerShellGet są Get InstalledScript i czasami z skrypt dezinstalacji.The only exceptions to this in the PowerShellGet script commands are Get-InstalledScript, and some cases with Uninstall-Script.

  • Get-InstalledScript zawsze automatycznie wyświetli informacje wstępne w ciągu wersji Jeśli jest obecny.Get-InstalledScript always will automatically show the prerelease information in the version string if it is present.
  • Odinstaluj skryptu domyślnie odinstaluje najnowszej wersji skryptu, jeśli nie została zainstalowana wersja jest określony.Uninstall-Script will by default uninstall the most recent version of a script, if no version is specified. To zachowanie nie zmienił się.That behavior has not changed. Jednakże jeśli jest to wersja wstępna produktu jest określony, przy użyciu -RequiredVersion, -AllowPrerelease będą wymagane.However, if a prerelease version is specified using -RequiredVersion, -AllowPrerelease will be required.

PrzykładyExamples

# 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

Odinstaluj skrypt spowoduje usunięcie bieżącej wersji skryptu, gdy - RequiredVersion nie zostanie dostarczona.Uninstall-Script will remove the current version of a script when -RequiredVersion is not supplied. Jeśli - RequiredVersion zostanie określona, jest w wersji wstępnej, - AllowPrerelease należy dodać do polecenia.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
+ Unnstall-Script TestPackage -RequiredVersion 1.9.0-beta
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Uninstall-Script], ArgumentException
    + FullyQualifiedErrorId : AllowPrereleaseRequiredToUsePrereleaseStringInVersion,Uninnstall-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

Więcej szczegółówMore details