Předběžné verze skriptů

Počínaje verzí 1.6.0 poskytuje PowerShellGet a Galerie prostředí PowerShell podporu pro označování verzí větších než 1.0.0 jako předběžnou verzi. Před touto funkcí byly předběžné verze balíčků omezeny na verzi začínající na 0. Cílem těchto funkcí je poskytovat větší podporu pro konvenci správy verzí SemVer verze 1.0.0 bez přerušení zpětné kompatibility s PowerShell verzemi 3 a novějšími nebo stávajícími verzemi PowerShellGetu. Toto téma se zaměřuje na funkce specifické pro skripty. Ekvivalentní funkce pro moduly jsou v tématu Předběžné verze modulů . Pomocí těchto funkcí můžou vydavatelé identifikovat skript jako verzi 2.5.0-alpha a později vydat produkční verzi 2.5.0, která nahrazuje předběžnou verzi.

Na vysoké úrovni zahrnují předběžné funkce skriptů:

  • Přidání přípony PrereleaseString do řetězce verze v manifestu skriptu Při publikování skriptů do Galerie prostředí PowerShell se tato data extrahují z manifestu a používají se k identifikaci předem připravených balíčků.
  • Získání předběžných balíčků vyžaduje přidání příznaku -AllowPrerelease do příkazů PowerShellGet Find-Script, Install-Script, Update-Script a Save-Script. Pokud příznak není zadaný, předprodejní balíčky se nezobrazí.
  • Verze skriptů zobrazené pomocí funkce Find-Script, Get-InstalledScript a v Galerie prostředí PowerShell se zobrazí s prereleaseString, jako v 2.5.0-alpha.

Podrobnosti o funkcích najdete níže.

Identifikace verze skriptu jako předběžné verze

Podpora Modulu PowerShellGet pro předběžné verze je pro skripty jednodušší než moduly. Správa verzí skriptů je podporována pouze nástrojem PowerShellGet, takže při přidávání řetězce předběžné verze nedochází k žádným problémům s kompatibilitou. Pokud chcete v Galerie prostředí PowerShell identifikovat skript jako předběžnou verzi, přidejte do metadat skriptu příponu předběžné verze.

Ukázková část manifestu skriptu s předběžnou verzí by vypadala takto:

<#PSScriptInfo

.VERSION 3.2.1-alpha12

.GUID

...

#>

Pokud chcete použít příponu předběžné verze, musí řetězec verze splňovat následující požadavky:

  • Příponu předběžné verze je možné zadat pouze v případě, že verze je 3 segmenty pro major.Minor.Build. To odpovídá SemVer v1.0.0.
  • Přípona předběžné verze je řetězec, který začíná spojovníkem a může obsahovat alfanumerické ASCII alfanumerické znaky [0-9A-Za-z-]
  • V tuto chvíli se podporují pouze řetězce předběžné verze SemVer verze 1.0.0, takže předprodejní přípona nesmí obsahovat tečku nebo +.+], které jsou povolené v aplikaci SemVer 2.0.
  • Příklady podporovaných řetězců PrereleaseString jsou: -alpha, -alpha1, -BETA, -update20171020

Předběžný dopad správy verzí na pořadí řazení a instalační složky

Řazení změn pořadí při použití předběžné verze, což je důležité při publikování do Galerie prostředí PowerShell a při instalaci skriptů pomocí příkazů PowerShellGet. Pokud existují dvě verze skriptů s číslem verze, pořadí řazení je založeno na řetězcové části za spojovníkem. Takže verze 2.5.0-alpha je menší než 2.5.0-beta, což je menší než 2.5.0-gamma. Pokud mají dva skripty stejné číslo verze a pouze jeden má prereleaseString, předpokládá se, že skript bez přípony předběžné verze bude verze připravená pro produkční prostředí a bude seřazena jako větší než předběžná verze. Například při porovnávání verzí 2.5.0 a 2.5.0-beta bude verze 2.5.0 považována za větší z těchto dvou verzí.

Při publikování do Galerie prostředí PowerShell musí mít ve výchozím nastavení publikovaná verze skriptu větší verzi než jakákoli dříve publikovaná verze, která je v Galerie prostředí PowerShell. Vydavatel může aktualizovat verzi 2.5.0-alpha s verzí 2.5.0-beta nebo 2.5.0 (bez přípony předběžné verze).

Vyhledání a získání předem připravených balíčků pomocí příkazů PowerShellGet

Práce s předem připravenými balíčky pomocí rutiny Find-Script, Install-Script, Update-Script a Save-Script vyžaduje přidání příznaku -AllowPrerelease. Pokud je zadaný parametr -AllowPrerelease, předprodejní balíčky budou zahrnuty, pokud jsou k dispozici. Pokud není zadaný příznak -AllowPrerelease, nezobrazí se předběžné verze balíčků.

Jedinými výjimkami v příkazech skriptu PowerShellGet jsou Get-InstalledScript a některé případy s Uninstall-Script.

  • Get-InstalledScript vždy automaticky zobrazí předběžné informace v řetězci verze, pokud je k dispozici.
  • Uninstall-Script ve výchozím nastavení odinstaluje nejnovější verzi skriptu, pokud není zadána žádná verze . Toto chování se nezměnilo. Pokud je však zadána předběžná verze pomocí -RequiredVersion, -AllowPrerelease bude vyžadována.

Příklady

# 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 odebere aktuální verzi skriptu, pokud není zadána hodnota -RequiredVersion. Pokud je zadán parametr -RequiredVersion a jedná se o předběžnou verzi, je nutné do příkazu přidat parametr -AllowPrerelease.

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

Další podrobnosti