Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Vanaf versie 1.6.0 bieden PowerShellGet en de PowerShell-galerie ondersteuning voor het taggen van versies groter dan 1.0.0 als een prerelease. Vóór deze functie waren prerelease-pakketten beperkt tot een versie die begon met 0. Het doel van deze functies is om meer ondersteuning te bieden voor de versiebeheerconventie van SemVer v1.0.0 zonder de achterwaartse compatibiliteit met PowerShell-versies 3 en hoger of bestaande versies van PowerShellGet te verbreken. Dit onderwerp richt zich op de scriptspecifieke functies. De equivalente functies voor modules staan in het onderwerp Prerelease-moduleversies . Met behulp van deze functies kunnen uitgevers een script identificeren als versie 2.5.0-alpha en later een productieklare versie 2.5.0 uitbrengen die de prerelease-versie vervangt.
Op een hoog niveau omvatten de prerelease-scriptfuncties:
- Een PrereleaseString-achtervoegsel toevoegen aan de versietekenreeks in het scriptmanifest. Wanneer de scripts worden gepubliceerd naar de PowerShell-galerie, worden deze gegevens uit het manifest geëxtraheerd en gebruikt om prerelease-pakketten te identificeren.
- Voor het verkrijgen van prerelease-pakketten moet -AllowPrerelease vlag worden toegevoegd aan de PowerShellGet-opdrachten Find-Script, Install-Script, Update-Script en Save-Script. Als de vlag niet is opgegeven, worden prerelease-pakketten niet weergegeven.
- Scriptversies die worden weergegeven door Find-Script, Get-InstalledScript en in de PowerShell-galerie, worden weergegeven met de PrereleaseString, zoals in 2.5.0-alpha.
Details voor de functies zijn hieronder opgenomen.
Een scriptversie identificeren als een pre-release
PowerShellGet-ondersteuning voor prerelease-versies is eenvoudiger voor scripts dan voor modules. Scriptversiebeheer wordt alleen ondersteund door PowerShellGet, dus er zijn geen compatibiliteitsproblemen die worden veroorzaakt door het toevoegen van de prerelease-tekenreeks. Als u een script in de PowerShell-galerie wilt identificeren als een prerelease, voegt u een prerelease-achtervoegsel toe aan een correct opgemaakte versietekenreeks in de metagegevens van het script.
Een voorbeeldsectie van een scriptmanifest met een prerelease-versie ziet er als volgt uit:
<#PSScriptInfo
.VERSION 3.2.1-alpha12
.GUID
...
#>
Als u een prerelease-achtervoegsel wilt gebruiken, moet de versietekenreeks aan de volgende vereisten voldoen:
- Een prerelease-achtervoegsel kan alleen worden opgegeven als de versie 3 segmenten is voor Major.Minor.Build. Dit komt overeen met SemVer v1.0.0
- Het prerelease-achtervoegsel is een tekenreeks die begint met een koppelteken en kan ASCII-alfanumerieke tekens bevatten [0-9A-Za-z-]
- Alleen SemVer v1.0.0 prerelease-tekenreeksen worden op dit moment ondersteund, dus het prerelease-achtervoegsel mag geen punt of + [.+] bevatten, die zijn toegestaan in SemVer 2.0
- Voorbeelden van ondersteunde PrereleaseString-tekenreeksen zijn: -alpha, -alpha1, -BETA, -update20171020
Impact van prerelease-versiebeheer op de sorteervolgorde en installatiemappen
Wijzigingen in de sorteervolgorde worden aangebracht bij het gebruik van een prerelease-versie, wat belangrijk is bij het publiceren naar de PowerShell-galerie en bij het installeren van scripts met behulp van PowerShellGet-opdrachten. Als er twee scriptversies met het versienummer bestaan, wordt de sorteervolgorde gebaseerd op het tekenreeksgedeelte na het koppelteken. Dus, versie 2.5.0-alpha is minder dan 2.5.0-beta, wat minder is dan 2.5.0-gamma. Als twee scripts hetzelfde versienummer hebben en slechts één script een PrereleaseString heeft, wordt aangenomen dat het script zonder het achtervoegsel voor een prerelease-versie de productieklare versie is en wordt het gesorteerd als een grotere versie dan de prerelease-versie. Als je bijvoorbeeld releases 2.5.0 en 2.5.0-bèta vergelijkt, wordt de 2.5.0-versie als de grootste van de twee beschouwd.
Wanneer u publiceert naar de PowerShell-galerie, moet de versie van het script dat wordt gepubliceerd standaard een grotere versie hebben dan een eerder gepubliceerde versie in de PowerShell-galerie. Een uitgever kan versie 2.5.0-alpha bijwerken met 2.5.0-bèta of met 2.5.0 (zonder prerelease-achtervoegsel).
Prerelease-pakketten zoeken en verkrijgen met behulp van PowerShellGet-opdrachten
Voor het omgaan met prerelease-pakketten met behulp van PowerShellGet Find-Script, Install-Script, Update-Script en Save-Script commando's moet de -AllowPrerelease-markering worden toegevoegd. Als -AllowPrerelease is opgegeven, worden prerelease-pakketten meegeleverd als deze aanwezig zijn. Als -AllowPrerelease vlag niet is opgegeven, worden prerelease-pakketten niet weergegeven.
De enige uitzonderingen hierop in de PowerShellGet-scriptopdrachten zijn Get-InstallScript en sommige gevallen met Uninstall-Script.
- Get-InstalledScript zal altijd automatisch de prerelease-informatie in de versiereeks tonen als deze aanwezig is.
- Uninstall-Script wordt standaard de meest recente versie van een script verwijderd als er geen versie is opgegeven. Dat gedrag is niet veranderd. Als er echter een prerelease-versie is opgegeven met
-RequiredVersion,-AllowPrereleaseis vereist.
Voorbeelden
# 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 verwijdert de huidige versie van een script wanneer -RequiredVersion niet is meegeleverd. Als -RequiredVersion is opgegeven en een prerelease is, moet -AllowPrerelease aan de opdracht worden toegevoegd.
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
Meer informatie
PowerShell Gallery