Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
A partir de la versión 1.6.0, PowerShellGet y la Galería de PowerShell proporcionan compatibilidad con el etiquetado de versiones superiores a 1.0.0 como versión preliminar. Antes de esta característica, los paquetes de versión preliminar se limitaban a tener una versión que comenzara con 0. El objetivo de estas características es proporcionar una mayor compatibilidad con la convención de control de versiones de SemVer v1.0.0 sin interrumpir la compatibilidad con versiones anteriores de PowerShell 3 y posteriores, o versiones existentes de PowerShellGet. Este tema se centra en las características específicas del módulo. Las características equivalentes para scripts se encuentran en el tema Versiones preliminares de scripts . Con estas características, los editores pueden identificar un módulo o script como la versión 2.5.0-alpha y, posteriormente, lanzar una versión 2.5.0 lista para producción que sustituya a la versión preliminar.
En un nivel alto, las características del módulo de versión preliminar incluyen:
- Al agregar una cadena de versión preliminar a la sección PSData del manifiesto del módulo, se identifica el módulo como una versión preliminar. Cuando el módulo se publica en la Galería de PowerShell, estos datos se extraen del manifiesto y se usan para identificar paquetes de versión preliminar.
- La adquisición de paquetes de versión preliminar requiere agregar
-AllowPrereleaseuna marca a los comandosFind-Modulede PowerShellGet ,Install-Module,Update-Module, ySave-Module. Si no se especifica la marca, no se mostrarán los paquetes de versión preliminar. - Las versiones de módulo que se muestran por
Find-Module,Get-InstalledModuley en la Galería de PowerShell se mostrarán como una sola cadena con la cadena de versión preliminar anexada, como en 2.5.0-alpha.
Los detalles de las funciones se incluyen a continuación.
Estos cambios no afectan a la compatibilidad con la versión del módulo integrada en PowerShell y son compatibles con PowerShell 3.0, 4.0 y 5.
Identificación de una versión del módulo como versión preliminar
La compatibilidad de PowerShellGet con versiones preliminares requiere el uso de dos campos dentro del manifiesto del módulo:
- El ModuleVersion incluido en el manifiesto del módulo debe ser una versión de 3 partes si se usa una versión preliminar y debe cumplir con el control de versiones de PowerShell existente. El formato de versión sería A.B.C, donde A, B y C son todos enteros.
- La cadena de versión preliminar se especifica en el manifiesto del módulo, en la sección PSData de PrivateData.
A continuación se detallan los requisitos de la cadena de la Presentación.
Una sección de ejemplo de un manifiesto de módulo que define un módulo como una versión preliminar tendría el siguiente aspecto:
@{
ModuleVersion = '2.5.0'
#---
PrivateData = @{
PSData = @{
Prerelease = 'alpha'
}
}
}
Los requisitos detallados para la cadena de Presentación son los siguientes:
- La cadena de versión preliminar solo se puede especificar cuando ModuleVersion es de 3 segmentos para Major.Minor.Build. Esto se alinea con SemVer v1.0.0.
- Un guión es el delimitador entre el número de compilación y la cadena de versión preliminar. Un guión solo se puede incluir en la cadena de versión preliminar como primer carácter.
- La cadena de versión preliminar solo puede contener alfanuméricos ASCII [0-9A-Za-z-]. Se recomienda comenzar la cadena de versión preliminar con un carácter alfabético, ya que será más fácil identificar que se trata de una versión preliminar al examinar una lista de paquetes.
- En este momento, solo se admiten cadenas de versión preliminar de SemVer v1.0.0. La cadena de versión preliminar no debe contener punto ni + [.+], que se permiten en SemVer 2.0.
- Algunos ejemplos de cadenas de versión preliminar admitidas son: -alpha, -alpha1, -BETA -update20171020
Impacto del control de versiones preliminar en el criterio de ordenación y las carpetas de instalación
El criterio de ordenación cambia cuando se usa una versión preliminar, lo cual es importante al publicar en la Galería de PowerShell y al instalar módulos mediante comandos de PowerShellGet. Si se especifica la cadena de versión preliminar para dos módulos, el criterio de ordenación se basa en la parte de la cadena que sigue al guión. Entonces, la versión 2.5.0-alfa es menor que 2.5.0-beta, que es menor que 2.5.0-gamma. Si dos módulos tienen el mismo ModuleVersion y solo uno tiene una cadena de versión preliminar, se supone que el módulo sin la cadena de versión preliminar es la versión lista para producción y se ordenará como una versión superior a la versión preliminar (que incluye la cadena de versión preliminar). Por ejemplo, al comparar las versiones 2.5.0 y 2.5.0-beta, la versión 2.5.0 se considerará la mayor de las dos.
Al publicar en la Galería de PowerShell, de forma predeterminada, la versión del módulo que se publica debe tener una versión superior a cualquier versión publicada anteriormente que se encuentre en la Galería de PowerShell.
Búsqueda y adquisición de paquetes de versión preliminar mediante comandos de PowerShellGet
Para tratar con paquetes de versión preliminar mediante los comandos Find-Module, Install-Module, Update-Module y Save-Module de PowerShellGet es necesario agregar la marca -AllowPrerelease. Si se especifica -AllowPrerelease, se incluirán paquetes de versión preliminar si están presentes. Si no se especifica -AllowPrerelease marca, no se mostrarán los paquetes de versión preliminar.
Las únicas excepciones a esto en los comandos del módulo PowerShellGet son Get-InstalledModule y algunos casos con Uninstall-Module.
- Get-InstalledModule siempre mostrará automáticamente la información de versión preliminar en la cadena de versión de los módulos.
- Uninstall-Module desinstalará de forma predeterminada la versión más reciente de un módulo, si no se especifica ninguna versión . Ese comportamiento no ha cambiado. Sin embargo, si se especifica una versión preliminar mediante -RequiredVersion, se requerirá -AllowPrerelease.
Examples
Supongamos que la Galería de PowerShell tiene las versiones 1.8.0 y 1.9.0-alpha del módulo TestPackage. Si -AllowPrerelease no se especifica, solo se devolverá la versión 1.8.0.
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...
Para instalar una versión preliminar, especifique siempre -AllowPrerelease. No basta con especificar una cadena de versión preliminar.
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
Se produjo un error en el comando anterior porque no se especificó -AllowPrerelease. Agregar -AllowPrerelease dará como resultado un éxito.
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...
No se admite la instalación en paralelo de versiones de un módulo que solo difieren debido a la versión preliminar especificada. Al instalar un módulo mediante PowerShellGet, se instalan diferentes versiones del mismo módulo en paralelo mediante la creación de un nombre de carpeta mediante ModuleVersion. ModuleVersion, sin la cadena de versión preliminar, se usa para el nombre de la carpeta. Si un usuario instala la versión 2.5.0-alpha de MyModule, se instalará en la MyModule\2.5.0 carpeta. Si el usuario instala 2.5.0-beta, la versión 2.5.0-beta sobrescribirá el contenido de la carpeta MyModule\2.5.0. Una ventaja de este enfoque es que no es necesario desinstalar la versión preliminar después de instalar la versión lista para producción. El siguiente ejemplo muestra qué esperar:
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 eliminará la última versión de un módulo cuando no se proporcione -RequiredVersion. Si se especifica -RequiredVersion y es una versión preliminar, se debe agregar -AllowPrerelease al comando.
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...
Más detalles
- Versiones preliminares de scripts
- Find-Module
- Install-Module
- Save-Module
- Update-Module
- Get-InstalledModule
- Desinstalar módulo
PowerShell Gallery