Sdílet prostřednictvím


Předběžné verze verzí modulů

Od verze 1.6.0 poskytují PowerShellGet a Galerie prostředí PowerShell podporu pro označování verzí vyšší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í 0. Cílem těchto funkcí je poskytnout větší podporu pro konvenci správy verzí SemVer v1.0.0, aniž by došlo k narušení zpětné kompatibility s PowerShellem verze 3 a vyšší nebo stávajícími verzemi PowerShellGetu. Toto téma se zaměřuje na funkce specifické pro modul. Ekvivalentní funkce pro skripty jsou uvedeny v tématu Předběžné verze skriptů . Pomocí těchto funkcí mohou 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.

Na vysoké úrovni mezi funkce předběžného modulu patří:

  • Přidáním řetězce předběžné verze do části PSData manifestu modulu se modul identifikuje jako předběžná verze. Když je modul publikován do Galerie prostředí PowerShell, tato data se extrahují z manifestu a použijí se k identifikaci předběžných verzí 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í uveden, předběžné verze balíčků se nezobrazí.
  • Verze modulů zobrazené pomocí Find-Module, Get-InstalledModulea v Galerii prostředí PowerShell se zobrazí jako jeden řetězec s připojeným řetězcem předběžné verze, jako ve verzi 2.5.0-alpha.

Podrobnosti o funkcích jsou uvedeny níže.

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

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

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

  • ModuleVersion zahrnutý v manifestu modulu musí být verze se 3 částmi, pokud se používá předběžná verze, a musí být v souladu s existujícím správou verzí PowerShellu. Formát verze by byl A.B.C, kde A, B a C jsou celá čísla.
  • Řetězec předběžné verze je určen v manifestu modulu v části PSData souboru PrivateData.

Podrobné požadavky na řetězec předběžných verzí jsou uvedeny níže.

Ukázková část manifestu modulu, která definuje modul jako předběžnou verzi, by vypadala takto:

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

Podrobné požadavky na řetězec Prerelease jsou:

  • Řetězec předběžné verze lze zadat pouze v případě, že ModuleVersion jsou 3 segmenty pro Major.Minor.Build. To je v souladu se SemVer v1.0.0.
  • Spojovník je oddělovač mezi číslem sestavení a řetězcem předběžné verze. Spojovník může být zahrnut do řetězce předběžné verze 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čínat řetězec předběžné verze znakem alfa, protože při kontrole seznamu balíčků bude snazší identifikovat, že se jedná o předběžnou verzi.
  • V současné době jsou podporovány pouze předběžné verze řetězců SemVer v1.0.0. Řetězec předběžné verze nesmí obsahovat tečku ani + [.+], které jsou povoleny v SemVer 2.0.
  • Příklady podporovaných předběžných verzí řetězců: -alpha, -alpha1, -BETA, -update20171020

Dopad předběžných verzí verzí 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 části řetězce následující po spojovníku. Verze 2.5.0-alpha je tedy nižší než 2.5.0-beta, což je méně než 2.5.0-gamma. Pokud mají dva moduly stejnou verzi ModuleVersion a pouze jeden má řetězec předběžné verze, modul bez řetězce předběžné verze se považuje za verzi připravenou k produkčnímu prostředí a bude seřazen jako větší verze než předběžná verze (která obsahuje řetězec 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.

Při publikování do Galerie prostředí PowerShell musí mít ve výchozím nastavení verze publikovaného modulu větší 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

Práce s předběžnými verzemi balíčků pomocí příkazů PowerShellGet Find-Module, Install-Module, Update-Module a Save-Module vyžaduje přidání příznaku -AllowPrerelease. Pokud je zadáno -AllowPrerelease, budou zahrnuty předběžné verze balíčků, pokud jsou k dispozici. Pokud -AllowPrerelease příznak nezadá, předběžné verze balíčků se nezobrazí.

Jediné výjimky v příkazech modulu PowerShellGet jsou Get-InstalledModule a některé případy s Uninstall-Module.

  • Get-InstalledModule vždy automaticky zobrazí informace o předběžné verzi v řetězci verze modulů.
  • 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 pomocí -RequiredVersion zadána předběžná verze, bude vyžadována -AllowPrerelease verze.

Examples

Předpokládejme, že Galerie prostředí PowerShell obsahuje modul TestPackage verze 1.8.0 a 1.9.0-alpha. Pokud -AllowPrerelease není zadaný, 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...

Chcete-li nainstalovat předběžnou verzi, vždy zadejte -AllowPrerelease. Zadání řetězce předběžné verze 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 se nezdařil, protože nebylo zadáno -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 zadanou předběžnou verzí, není podporována. Při instalaci modulu pomocí PowerShellGet se vedle sebe nainstalují různé verze stejného modulu vytvořením názvu složky pomocí ModuleVersion. Pro název složky se používá ModuleVersion bez řetězce předběžné verze. Pokud uživatel nainstaluje MyModule verze 2.5.0-alpha, nainstaluje se do MyModule\2.5.0 složky. Pokud si uživatel poté nainstaluje verzi 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é odinstalovat předběžnou verzi. Níže uvedený 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-RequiredVersion pokud není dodán. Pokud je zadáno -RequiredVersion a jedná se o předběžnou verzi, je nutné do příkazu přidat -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