Předběžné verze skriptů

Počínaje verzí 1.6.0 poskytuje PowerShellGet a Galerie prostředí PowerShell podporu pro předběžné označování verzí vyšších než 1.0.0. Před touto funkcí byly předběžné verze balíčků omezené na verzi začínající na 0. Cílem těchto funkcí je poskytovat větší podporu konvencí správy verzí SemVer v1.0.0 , aniž by došlo k narušení zpětné kompatibility s PowerShellem verze 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 najdete v tématu Předběžné verze modulů . Pomocí těchto funkcí mohou vydavatelé identifikovat skript jako verzi 2.5.0-alpha a později vydat verzi 2.5.0 připravenou pro produkční prostředí, která nahrazuje předběžnou verzi.

Mezi funkce předběžného skriptu na vysoké úrovni patří:

  • 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žijí se k identifikaci předběžně vydaných balíčků.
  • Získání předběžných verzí 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ředběžné verze balíčků se nezobrazí.
  • Verze skriptů zobrazené pomocí 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 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řidání řetězce předběžné verze neobsahuje žádné problémy s kompatibilitou. Chcete-li identifikovat skript v Galerie prostředí PowerShell jako předběžnou verzi, přidejte do správně formátovaného řetězce verze v metadatech skriptu příponu předběžné verze.

Příklad oddílu manifestu skriptu s předběžnou verzí by vypadal 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ředprodejní příponu lze zadat pouze v případě, že verze je 3 segmenty pro Major.Minor.Build. To je v souladu s SemVer v1.0.0.
  • Přípona předběžné verze je řetězec, který začíná spojovníkem a může obsahovat alfanumerické znaky ASCII [0-9A-Za-z-].
  • V tuto chvíli jsou podporovány pouze řetězce předběžné verze SemVer v1.0.0, takže přípona předběžné verze nesmí obsahovat tečku nebo + [.+], které jsou povolené v aplikaci SemVer 2.0.
  • Příklady podporovaných řetězců PrereleaseString: -alpha, -alpha1, -BETA, -update20171020

Dopad předběžné verze na pořadí řazení a instalační složky

Změny pořadí řazení při použití předběžné verze, která 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, je pořadí řazení založeno na řetězcové části za spojovníkem. Takže verze 2.5.0-alfa je menší než 2.5.0-beta, což je méně než 2.5.0-gama. Pokud dva skripty mají stejné číslo verze a pouze jeden má prereleaseString, skript bez přípony předběžné verze se předpokládá, že je verze připravená pro produkční prostředí a bude seřazena jako vyšší verze než předběžná verze. Například při porovnání verzí 2.5.0 a 2.5.0-beta bude verze 2.5.0 považována za vyšší z těchto dvou verzí.

Při publikování do Galerie prostředí PowerShell musí mít verze publikovaného skriptu ve výchozím nastavení vyšší 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ředběžných verzí balíčků pomocí příkazů PowerShellGet

Při práci s předběžnými verzemi balíčků pomocí příkazů Find-Script, Install-Script, Update-Script a Save-Script PowerShellGet vyžaduje přidání příznaku -AllowPrerelease. Pokud je zadán parametr -AllowPrerelease, budou zahrnuté předběžné balíčky, pokud jsou k dispozici. Pokud příznak -AllowPrerelease není zadaný, předběžné verze balíčků se nezobrazí.

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í informace o předběžné verzi 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 předběžná verze určena pomocí -RequiredVersionpříkazu , -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án příkaz -RequiredVersion. Pokud je zadán parametr -RequiredVersion a jedná se o předběžnou verzi, musí být do příkazu přidán 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