Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
À partir de la version 1.6.0, PowerShellGet et la galerie PowerShell prennent en charge le balisage des versions supérieures à 1.0.0 en tant que préversion. Avant cette fonctionnalité, les packages de préversion étaient limités à une version commençant par 0. L’objectif de ces fonctionnalités est de fournir une meilleure prise en charge de la convention de gestion des versions de SemVer v1.0.0 sans rompre la compatibilité descendante avec les versions 3 et ultérieures de PowerShell, ou les versions existantes de PowerShellGet. Cette rubrique se concentre sur les fonctionnalités spécifiques aux scripts. Les fonctionnalités équivalentes pour les modules se trouvent dans la rubrique Versions préliminaires des modules . À l’aide de ces fonctionnalités, les éditeurs peuvent identifier un script comme étant la version 2.5.0-alpha, puis publier ultérieurement une version 2.5.0 prête pour la production qui remplace la version préliminaire.
À un niveau élevé, les fonctionnalités du script de préversion incluent :
- Ajout d’un suffixe PrereleaseString à la chaîne de version dans le manifeste de script. Lorsque les scripts sont publiés dans la galerie PowerShell, ces données sont extraites du manifeste et utilisées pour identifier les packages en préversion.
- L’acquisition de packages en préversion nécessite l’ajout de -AllowPrerelease indicateur aux commandes PowerShellGet Find-Script, Install-Script, Update-Script et Save-Script. Si l’indicateur n’est pas spécifié, les packages de préversion ne seront pas affichés.
- Les versions de script affichées par Find-Script, Get-InstalledScript et dans la galerie PowerShell seront affichées avec PrereleaseString, comme dans 2.5.0-alpha.
Les détails des fonctionnalités sont inclus ci-dessous.
Identification d’une version de script en tant que préversion
PowerShellLa prise en charge des versions préliminaires est plus facile pour les scripts que pour les modules. La gestion des versions de script n’est prise en charge que par PowerShellGet, de sorte qu’il n’y a pas de problèmes de compatibilité causés par l’ajout de la chaîne de préversion. Pour identifier un script dans la galerie PowerShell en tant que préversion, ajoutez un suffixe de préversion à une chaîne de version correctement formatée dans les métadonnées du script.
Un exemple de section d’un manifeste de script avec une version préliminaire ressemblerait à ce qui suit :
<#PSScriptInfo
.VERSION 3.2.1-alpha12
.GUID
...
#>
Pour utiliser un suffixe de préversion, la chaîne de version doit répondre aux exigences suivantes :
- Un suffixe de préversion ne peut être spécifié que lorsque la version est de 3 segments pour Major.Minor.Build. Cela s’aligne sur SemVer v1.0.0
- Le suffixe de préversion est une chaîne qui commence par un trait d’union et peut contenir des caractères alphanumériques ASCII [0-9A-Za-z-]
- Seules les chaînes de préversion de SemVer v1.0.0 sont prises en charge pour le moment, de sorte que le suffixe de préversion ne doit pas contenir de point ou de + [.+], qui sont autorisés dans SemVer 2.0
- Exemples de chaînes PrereleaseString prises en charge : -alpha, -alpha1, -BETA, -update20171020
Impact de la version préliminaire sur l’ordre de tri et les dossiers d’installation
L’ordre de tri change lors de l’utilisation d’une version préliminaire, ce qui est important lors de la publication dans la galerie PowerShell et de l’installation de scripts à l’aide des commandes PowerShellGet. S’il existe deux versions de scripts avec le numéro de version, l’ordre de tri est basé sur la partie chaîne qui suit le trait d’union. Ainsi, la version 2.5.0-alpha est inférieure à la version 2.5.0-bêta, qui est inférieure à la version 2.5.0-gamma. Si deux scripts ont le même numéro de version et qu’un seul a un PrereleaseString, le script sans le suffixe de préversion est considéré comme la version prête pour la production et sera trié comme une version supérieure à la version préliminaire. À titre d’exemple, lorsque l’on compare les versions 2.5.0 et 2.5.0-bêta, la version 2.5.0 sera considérée comme la plus grande des deux.
Lors de la publication dans la galerie PowerShell, par défaut, la version du script publiée doit avoir une version supérieure à toute version précédemment publiée qui se trouve dans la galerie PowerShell. Un éditeur peut mettre à jour la version 2.5.0-alpha avec la version 2.5.0-bêta ou avec la version 2.5.0 (sans suffixe de préversion).
Recherche et acquisition de packages de préversion à l’aide des commandes PowerShellGet
La gestion des packages en préversion à l’aide des commandes PowerShellGet Find-Script, Install-Script, Update-Script et Save-Script nécessite l’ajout de l’indicateur -AllowPrerelease. Si -AllowPrerelease est spécifié, les packages de préversion seront inclus s’ils sont présents. Si -AllowPrerelease indicateur n’est pas spécifié, les packages de préversion ne seront pas affichés.
Les seules exceptions à cette règle dans les commandes de script PowerShellGet sont Get-InstalledScript et, dans certains cas, Uninstall-Script.
- Get-InstalledScript affichera toujours automatiquement les informations de préversion dans la chaîne de version si elles sont présentes.
- Uninstall-Script désinstallera par défaut la version la plus récente d’un script, si aucune version n’est spécifiée. Ce comportement n’a pas changé. Toutefois, si une version préliminaire est spécifiée à l’aide de
-RequiredVersion,-AllowPrerelease, sera nécessaire.
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 supprimera la version actuelle d’un script lorsque -RequiredVersion n’est pas fournie. Si -RequiredVersion est spécifié et qu’il s’agit d’une préversion, -AllowPrerelease doit être ajouté à la commande.
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
Plus d’informations
PowerShell Gallery