Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 skript. Ekvivalentní funkce pro moduly jsou uvedeny 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.
Na vysoké úrovni mezi funkce předběžného skriptu patří:
- Přidání přípony PrereleaseString do řetězce verze v manifestu skriptu. Když jsou skripty publikovány do Galerie prostředí PowerShell, jsou tato data extrahována z manifestu a použita k identifikaci předběžných verzí 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í uveden, předběžné verze balíčků se nezobrazí.
- Verze skriptů zobrazené pomocí Find-Script, Get-InstalledScript a v Galerii prostředí PowerShell se zobrazí s řetězcem PrereleaseString, stejně jako ve verzi 2.5.0-alpha.
Podrobnosti o funkcích jsou uvedeny níže.
Identifikace verze skriptu jako předběžné verze
Podpora PowerShellGet pro předběžné verze verzí je jednodušší pro skripty než pro moduly. Správa verzí skriptů je podporována pouze modulem PowerShellGet, takže přidáním řetězce předběžné verze nedochází k problémům s kompatibilitou. Pokud chcete skript v Galerie prostředí PowerShell identifikovat jako předběžnou verzi, přidejte do správně naformátovaného řetězce verze v metadatech 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
...
#>
Chcete-li použít předběžnou verzi přípony, musí řetězec verze splňovat následující požadavky:
- Předběžná verze přípony může být zadána pouze v případě, že verze je 3 segmenty pro Major.Minor.Build. To je v souladu se SemVer v1.0.0
- Přípona předběžné verze je řetězec, který začíná pomlčkou a může obsahovat alfanumerické znaky ASCII [0-9A-Za-z-]
- V současné době jsou podporovány pouze předběžné verze řetězců SemVer v1.0.0, takže přípona předběžné verze nesmí obsahovat tečku ani + [.+], které jsou v SemVer 2.0 povoleny.
- Příklady podporovaných řetězců PrereleaseString jsou: -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 skriptů pomocí příkazů PowerShellGet. Pokud existují dvě verze skriptů s číslem verze, je pořadí řazení založeno na části řetězce následující za pomlčkou. 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 skripty stejné číslo verze a pouze jeden má PrereleaseString, skript bez přípony prerelease 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. 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 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-alfa na verzi 2.5.0-beta nebo na verzi 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
Práce s předběžnými verzemi balíčků pomocí příkazů PowerShellGet Find-Script, Install-Script, Update-Script a Save-Script 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ý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 jsou 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 zadána pomocí ,
-AllowPrereleasebude vyžadována .-RequiredVersion
Examples
# 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í dodán -RequiredVersion. 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-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
PowerShell Gallery