Předběžné verze modulů

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 moduly. Ekvivalentní funkce pro skripty jsou v tématu Předběžné verze skriptů . Pomocí těchto funkcí můžou vydavatelé identifikovat modul nebo 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é verze modulu patří:

  • Přidání řetězce Předběžné verze do části PSData manifestu modulu identifikuje modul jako předběžnou verzi. Při publikování modulu do Galerie prostředí PowerShell se tato data extrahují z manifestu a použijí se k identifikaci předběžných balíčků.
  • Získání předběžných verzí balíčků vyžaduje přidání -AllowPrerelease příznaku do příkazů Find-ModulePowerShellGet , Install-Module, Update-Modulea Save-Module. Pokud příznak není zadaný, předběžné verze balíčků se nezobrazí.
  • Verze modulů zobrazené pomocí Find-Module, Get-InstalledModulea v Galerie prostředí PowerShell se zobrazí jako jeden řetězec s připojeným řetězcem Prerelease, jako v 2.5.0-alpha.

Podrobnosti o funkcích najdete níže.

Tyto změny nemají vliv na podporu verzí modulů, která je integrovaná v PowerShellu a jsou kompatibilní s PowerShellem 3.0, 4.0 a 5.

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

Podpora PowerShellGet pro předběžné verze vyžaduje použití dvou polí v rámci manifestu modulu:

  • ModuleVersion, která je součástí manifestu modulu, musí být 3dílná verze, pokud se používá předběžná verze, a musí být v souladu s existující verzí PowerShellu. Formát verze je A.B.C, kde A, B a C jsou celá čísla.
  • Řetězec Prerelease je zadaný v manifestu modulu v části PSData privateData.

Podrobné požadavky na řetězec předběžné verze najdete níže.

Příklad oddílu manifestu modulu, který definuje modul jako předběžnou verzi, by vypadal takto:

@{
    ModuleVersion = '2.5.0'
    #---
    PrivateData = @{
        PSData = @{
            Prerelease = 'alpha'
        }
    }
}

Podrobné požadavky na řetězec předběžné verze jsou:

  • Řetězec předběžné verze může být zadán pouze v případě, že ModuleVersion je 3 segmenty pro Major.Minor.Build. To je zarovnané se semVerem v1.0.0.
  • Spojovník je oddělovač mezi číslem sestavení a řetězcem Předběžné verze. Spojovník může být v řetězci Předběžné verze zahrnut pouze jako první znak.
  • Řetězec předběžné verze může obsahovat pouze alfanumerické znaky ASCII [0-9A-Za-z-]. Osvědčeným postupem je začít řetězec předběžné verze znakem alfa, protože při prohledávání seznamu balíčků bude snazší identifikovat, že se jedná o předběžnou verzi.
  • V tuto chvíli jsou podporovány pouze řetězce předběžné verze SemVer v1.0.0. Předprodejní řetězec nesmí obsahovat tečku ani + [.+], které jsou povolené v semVeru 2.0.
  • Příklady podporovaných řetězců předběžné verze: -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, což je důležité při publikování do Galerie prostředí PowerShell a při instalaci modulů pomocí příkazů PowerShellGet. Pokud je řetězec Předběžné verze zadán pro dva moduly, pořadí řazení je 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 moduly mají stejnou verzi ModuluVersion a pouze jeden má řetězec Předběžné verze, předpokládá se, že modul bez řetězce Prerelease je verze připravená pro produkční prostředí a bude seřazen jako vyšší verze než předběžná verze (která zahrnuje řetězec Prerelease). 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 publikovaná verze modulu ve výchozím nastavení vyšší verzi než jakákoli dříve publikovaná verze, která je v Galerie prostředí PowerShell.

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-Module, Install-Module, Update-Module a Save-Module 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 modulu PowerShellGet jsou Get-InstalledModule a v některých případech s Uninstall-Module.

  • Get-InstalledModule vždy automaticky zobrazí informace o předběžné verzi v řetězci verze pro moduly.
  • Uninstall-Module ve výchozím nastavení odinstaluje nejnovější verzi modulu, pokud není zadána žádná verze . Toto chování se nezměnilo. Pokud je však předběžná verze určena pomocí parametru -RequiredVersion, bude vyžadována hodnota -AllowPrerelease.

Příklady

Předpokládejme, že Galerie prostředí PowerShell má modul TestPackage verze 1.8.0 a 1.9.0-alpha. Pokud -AllowPrerelease není zadán, vrátí se pouze verze 1.8.0.

find-module TestPackage
Version        Name           Repository  Description
-------        ----           ----------  -----------
1.8.0          TestPackage    PSGallery   Package used to validate changes to the PowerShe...
find-module TestPackage -AllowPrerelease
Version        Name           Repository  Description
-------        ----           ----------  -----------
1.9.0-alpha    TestPackage    PSGallery   Package used to validate changes to the PowerShe...

Pokud chcete nainstalovat předběžnou verzi, vždy zadejte -AllowPrerelease. Zadání řetězce verze předběžné verze není dostatečné.

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

Předchozí příkaz selhal, protože nebyl zadán parametr -AllowPrerelease. Přidání -AllowPrerelease bude mít za následek úspěch.

Install-module TestPackage -RequiredVersion 1.9.0-alpha -AllowPrerelease
Get-InstalledModule TestPackage
Version         Name          Repository  Description
-------         ----          ----------  -----------
1.9.0-alpha     TestPackage   PSGallery   Package used to validate changes to the PowerShe...

Souběžná instalace verzí modulu, které se liší pouze kvůli zadanému předběžnému vydání, se nepodporuje. Při instalaci modulu pomocí modulu PowerShellGet se různé verze stejného modulu instalují vedle sebe vytvořením názvu složky pomocí moduluVersion. ModuleVersion bez řetězce předběžné verze se používá pro název složky. Pokud uživatel nainstaluje MyModule verze 2.5.0-alpha, nainstaluje MyModule\2.5.0 se do složky. Pokud uživatel pak nainstaluje 2.5.0-beta, verze 2.5.0-beta přepíše obsah složky MyModule\2.5.0. Jednou z výhod tohoto přístupu je, že po instalaci verze připravené pro produkční prostředí není nutné zrušit instalaci předběžné verze. Následující příklad ukazuje, co můžete očekávat:

C:\windows\system32> Get-InstalledModule TestPackage -AllVersions

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

C:\windows\system32> find-module TestPackage -AllowPrerelease

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

C:\windows\system32> Update-Module TestPackage -AllowPrerelease
C:\windows\system32> Get-InstalledModule TestPackage -AllVersions

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

Uninstall-Module odebere nejnovější verzi modulu, pokud není zadán parametr -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-InstalledModule TestPackage -AllVersions

Version         Name           Repository  Description
-------         ----           ----------  -----------
2.0.0-alpha1    TestPackage    PSGallery   Package used to validate changes to the PowerShe...
1.9.0-beta      TestPackage    PSGallery   Package used to validate changes to the PowerShe...
1.8.0           TestPackage    PSGallery   Package used to validate changes to the PowerShe...
1.1.3.2         TestPackage    PSGallery   Package used to validate changes to the PowerShe...

C:\windows\system32> Uninstall-Module TestPackage -RequiredVersion 1.9.0-beta

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

C:\windows\system32> Uninstall-Module TestPackage -RequiredVersion 1.9.0-beta -AllowPrerelease
C:\windows\system32> Get-InstalledModule TestPackage -AllVersions

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

C:\windows\system32> Uninstall-Module TestPackage
C:\windows\system32> Get-InstalledModule TestPackage -AllVersions

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

Další podrobnosti