Question [Tutoriel] Gestion des versions d’un module

Plus d'informations
il y a 7 ans 9 mois #22076 par Laurent Dardenne
Voici un tutoriel sur la gestion des versions d’un module (psv4 & ps v5).

Il aborde également une solution de contrôle de version pour les instances de classes Powershell version 5 hébergées dans un module.
Le plus souvent un traitement distant récupère simplement des données, si on souhaite réhydrater (reconstruire) une instance, la classe utilisée doit être identique sur le(s) distant(s) et le local.
[edit]
class SemanticVersion (PackagaManagement)

RequiredModules causes incorrect \"cyclic dependency\"

Préversions de module

Versioning limitations in Net.

Remove Class from Memory in PowerShell

Message édité par: Laurent Dardenne, à: 23/08/16 12:19

Message édité par: Laurent Dardenne, à: 1/05/17 07:57

Message édité par: Laurent Dardenne, à: 3/01/18 11:28

Message édité par: Laurent Dardenne, à: 26/07/19 09:46<br><br>Message édité par: Laurent Dardenne, à: 30/08/19 09:51

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 9 mois #22078 par Laurent Dardenne
La version 5.1 de Powershell proposera une notion supplémentaire autour d'une nouvelle propriété MaximumVersion dans la classe Microsoft.PowerShell.Commands.ModuleSpecification.
A suivre...

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 8 mois #22109 par Laurent Dardenne
WMF 5.1 Preview améliore la gestion des version pour l'instruction using
.
Sous Ps v5.0 cette instruction ne fonctionne pas si un module est versionné( get-module Name renvoi 2 modules), maintenant la 5.1 gère ce cas :
[code:1]
using Module @{
ModuleName = 'Computer';
Guid = '{2b7f4daf-ddb7-43b3-82e6-812af3def67e}' ;
RequiredVersion = '1.0' }
[/code:1]
Ici aussi l'instruction 'Using Module Computer' dépend de l'ordre de déclaration des path et PS charge la version maximum disponible.

[Edit]
La clause requires autorise une nouvelle valeur :
[code:1]
#requires -PSEdition Core
[/code:1]

Post sur using
Message édité par: Laurent Dardenne, à: 28/07/16 11:12<br><br>Message édité par: Laurent Dardenne, à: 24/10/16 20:16

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 7 mois #22263 par Laurent Dardenne
Dans le document j'indique que :

Seul un module possède un numéro de version via son manifeste qui attache des métadonnées à un module.

Il s'agit des métadonnées accessibles via Get-Command.

On peut désormais publier des scripts sur Powershell Gallery, pour permettre une gestion de version, le module PowerShellGet (PSModule.psm1) propose l'ajout de métadonnées.
Celles-ci le sont sous forme de commentaires structurés, la fonction New-ScriptFileInfo crée le squelette d'un script :
[code:1]
New-ScriptFileInfo -Path c:\temp\version.ps1 -Description Test
type c:\temp\version.ps1
# &lt;#PSScriptInfo
#
# .VERSION 1.0
#
# .GUID 4dd5c2ec-aa78-43f5-a82f-49dacde41d09
#
# .AUTHOR Laurent
#
# .COMPANYNAME
#
# .COPYRIGHT
#
# .TAGS
#
# .LICENSEURI
#
# .PROJECTURI
#
# .ICONURI
#
# .EXTERNALMODULEDEPENDENCIES
#
# .REQUIREDSCRIPTS
#
# .EXTERNALSCRIPTDEPENDENCIES
#
# .RELEASENOTES
#
#
# #&gt;
#
# &lt;#
#
# .DESCRIPTION
# Test
#
# #&gt;
# Param()
[/code:1]
On récupère ces informations via la fonction Test-ScriptFileInfo :
[code:1]
$O=Test-ScriptFileInfo -Path c:\temp\version.ps1
$O.psobject.typenames
# Microsoft.PowerShell.Commands.PSScriptInfo
# System.Management.Automation.PSCustomObject
# System.Object
[/code:1]
La liste des propriétés :
[code:1]
$O|select *
# Name : version
# Version : 1.0
# Guid : 4dd5c2ec-aa78-43f5-a82f-49dacde41d09
# Path : C:\temp\version.ps1
# ScriptBase : C:\temp
# Description : Test
# Author : Laurent
# CompanyName :
# Copyright :
# Tags :
# ReleaseNotes :
# RequiredModules :
# ExternalModuleDependencies :
# RequiredScripts :
# ExternalScriptDependencies :
# LicenseUri :
# ProjectUri :
# IconUri :
# DefinedCommands :
# DefinedFunctions :
# DefinedWorkflows :
[/code:1]
La fonction Update-ScriptFileInfo met à jour ces propriétés :
[code:1]
Update-ScriptFileInfo -path c:\temp\version.ps1 -Version 2.0 -Force
[/code:1]
Mais pour le moment elle est buggée , une version corrigée doit être publié prochainement.
[edit]
La version 1.1.0.0 de PowershellGet corrige le bug de .Update-ScriptFileInfo

Message édité par: Laurent Dardenne, à: 6/09/16 17:42<br><br>Message édité par: Laurent Dardenne, à: 30/09/16 09:52

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 6 mois #22333 par Laurent Dardenne
La version 6.0 proposerait une classe de gestion sémantique de version (à priori pour PackageManagement uniquement).

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 6 mois #22447 par Laurent Dardenne
Issue de la dernière version de PackageManagment [code:1][Microsoft.PackageManagement.Provider.Utility.SemanticVersion]::new('1.0.0-beta-exp.sha.5114f85')

Version SpecialVersion

1.0.0.0 beta-exp.sha.5114f85[/code:1]
Avec le caractère '+' :
[code:1][Microsoft.PackageManagement.Provider.Utility.SemanticVersion]::new('1.0.0+beta-exp.sha.5114f85')

Version SpecialVersion

1.0.0.0 [/code:1]
:)

[edit]
BNF pour semver 2.0
Message édité par: Laurent Dardenne, à: 30/09/16 10:11

Message édité par: Laurent Dardenne, à: 1/10/16 11:46
Bug avec ScriptToProcess et -version<br><br>Message édité par: Laurent Dardenne, à: 12/05/17 11:52

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.079 secondes
Propulsé par Kunena