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 au module. Les fonctionnalités équivalentes pour les scripts se trouvent dans la rubrique Versions préliminaires des scripts . À l’aide de ces fonctionnalités, les éditeurs peuvent identifier un module ou un script en tant que 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 module de préversion incluent :
- L’ajout d’une chaîne de préversion à la section PSData du manifeste du module identifie le module en tant que version préliminaire. Lorsque le module est publié 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
-AllowPrereleased’un indicateur aux commandesFind-ModulePowerShellGet ,Install-Module,Update-ModuleetSave-Module. Si l’indicateur n’est pas spécifié, les packages de préversion ne seront pas affichés. - Les versions de module affichées par
Find-Module,Get-InstalledModuleet dans la galerie PowerShell seront affichées sous la forme d’une seule chaîne avec la chaîne de préversion ajoutée, comme dans 2.5.0-alpha.
Les détails des fonctionnalités sont inclus ci-dessous.
Ces modifications n’affectent pas la prise en charge de la version du module intégrée à PowerShell et sont compatibles avec PowerShell 3.0, 4.0 et 5.
Identification d’une version de module en tant que préversion
PowerShellLa prise en charge des versions préliminaires nécessite l’utilisation de deux champs dans le manifeste du module :
- La version ModuleVersion incluse dans le manifeste du module doit être une version en 3 parties si une version préliminaire est utilisée, et doit être conforme à la gestion des versions PowerShell existante. Le format de version serait A.B.C, où A, B et C sont tous des entiers.
- La chaîne Prerelease est spécifiée dans le manifeste du module, dans la section PSData de PrivateData.
Vous trouverez ci-dessous les exigences détaillées concernant la chaîne d’Avant-première.
Un exemple de section d’un manifeste de module qui définit un module en tant que préversion ressemblerait à ce qui suit :
@{
ModuleVersion = '2.5.0'
#---
PrivateData = @{
PSData = @{
Prerelease = 'alpha'
}
}
}
Les exigences détaillées pour la chaîne de préversion sont les suivantes :
- La chaîne de préversion ne peut être spécifiée que lorsque la ModuleVersion est de 3 segments pour Major.Minor.Build. Cela s’aligne sur SemVer v1.0.0.
- Un trait d’union est le délimiteur entre le numéro de build et la chaîne de préversion. Un trait d’union peut être inclus dans la chaîne de pré-édition en tant que premier caractère, uniquement.
- La chaîne de préversion ne peut contenir que des caractères alphanumériques ASCII [0-9A-Za-z-]. Il est recommandé de commencer la chaîne de préversion par un caractère alpha, car il sera plus facile d’identifier qu’il s’agit d’une version préliminaire lors de l’analyse d’une liste de packages.
- Seules les chaînes de préversion de SemVer v1.0.0 sont prises en charge pour le moment. La chaîne de préversion ne doit contenir ni point ni + [.+], qui sont autorisés dans SemVer 2.0.
- Exemples de chaînes de préversion 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 lors de l’installation de modules à l’aide des commandes PowerShellGet. Si la chaîne de préversion est spécifiée pour deux modules, l’ordre de tri est basé sur la partie de 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 modules ont le même ModuleVersion et qu’un seul a une chaîne de préversion, le module sans la chaîne de préversion est considéré comme la version prête pour la production et sera trié comme une version supérieure à la version de préversion (qui inclut la chaîne de préversion). À 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 module publiée doit avoir une version supérieure à toute version précédemment publiée qui se trouve dans la galerie PowerShell.
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-Module, Install-Module, Update-Module et Save-Module 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 à cela dans les commandes PowerShellGet module sont Get-InstalledModule, et dans certains cas avec Uninstall-Module.
- Get-InstalledModule affichera automatiquement les informations de préversion dans la chaîne de version des modules.
- Uninstall-Module désinstallera par défaut la version la plus récente d’un module, 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 requise.
Examples
Supposons que la galerie PowerShell dispose des versions 1.8.0 et 1.9.0-alpha du module TestPackage. Si -AllowPrerelease n’est pas spécifié, seule la version 1.8.0 sera renvoyée.
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...
Pour installer une préversion, spécifiez toujours -AllowPrerelease. La spécification d’une chaîne de version préliminaire n’est pas suffisante.
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
La commande précédente a échoué car -AllowPrerelease n’a pas été spécifiée. L’ajout -AllowPrerelease se traduira par le succès.
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...
L’installation côte à côte de versions d’un module qui diffèrent uniquement en raison de la préversion spécifiée n’est pas prise en charge. Lors de l’installation d’un module à l’aide de PowerShellGet, différentes versions du même module sont installées côte à côte en créant un nom de dossier à l’aide de ModuleVersion. La fonction ModuleVersion, sans la chaîne de préversion, est utilisée pour le nom du dossier. Si un utilisateur installe la version 2.5.0-alpha de MyModule, il sera installé dans le MyModule\2.5.0 dossier. Si l’utilisateur installe ensuite la version 2.5.0-beta, la version 2.5.0-beta écrasera le contenu du dossier MyModule\2.5.0. L’un des avantages de cette approche est qu’il n’est pas nécessaire de désinstaller la version préliminaire après l’installation de la version prête pour la production. L’exemple ci-dessous montre à quoi s’attendre :
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 supprimera la dernière version d’un module lorsque -RequiredVersion n’est pas fourni. Si -RequiredVersion est spécifié et qu’il s’agit d’une préversion, -AllowPrerelease doit être ajouté à la commande.
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...
Plus d’informations
- Versions préliminaires des scripts
- find-module
- Install-Module
- Save-Module
- update-module
- Get-InstalledModule
- Désinstaller-Module
PowerShell Gallery