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 script. Las características equivalentes para los módulos se encuentran en el tema Versiones preliminares de módulos . Con estas características, los editores pueden identificar un script como versión 2.5.0-alpha y luego lanzar una versión 2.5.0 lista para producción que reemplaza la versión preliminar.
En un nivel alto, las características de la versión preliminar del script incluyen:
- Agregar un sufijo PrereleaseString a la cadena de versión en el manifiesto de script. Cuando los scripts se publican 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 -AllowPrerelease marca a los comandos de PowerShellGet Find-Script, Install-Script, Update-Script y Save-Script. Si no se especifica la marca, no se mostrarán los paquetes de versión preliminar.
- Las versiones de script mostradas por Find-Script, Get-InstalledScript y en la Galería de PowerShell se mostrarán con PrereleaseString, como en 2.5.0-alpha.
Los detalles de las funciones se incluyen a continuación.
Identificación de una versión de script como versión preliminar
La compatibilidad de PowerShellGet con las versiones preliminares es más fácil para los scripts que para los módulos. PowerShellGet solo admite el control de versiones de scripts, por lo que no hay problemas de compatibilidad causados por la adición de la cadena de versión preliminar. Para identificar un script en la Galería de PowerShell como una versión preliminar, agregue un sufijo de versión preliminar a una cadena de versión con el formato adecuado en los metadatos del script.
Una sección de ejemplo de un manifiesto de script con una versión preliminar tendría el siguiente aspecto:
<#PSScriptInfo
.VERSION 3.2.1-alpha12
.GUID
...
#>
Para usar un sufijo de versión preliminar, la cadena de versión debe cumplir los siguientes requisitos:
- Solo se puede especificar un sufijo de versión preliminar cuando la versión es de 3 segmentos para Major.Minor.Build. Esto se alinea con SemVer v1.0.0
- El sufijo de versión preliminar es una cadena que comienza con un guion y puede contener alfanuméricos ASCII [0-9A-Za-z-]
- En este momento, solo se admiten cadenas de versión preliminar de SemVer v1.0.0, por lo que el sufijo de versión preliminar no debe contener punto ni + [.+], que se permiten en SemVer 2.0
- Algunos ejemplos de cadenas PrereleaseString 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 scripts mediante comandos de PowerShellGet. Si existen dos versiones de scripts con el número de versión, el criterio de ordenación se basa en la parte de 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 scripts tienen el mismo número de versión y solo uno tiene un PrereleaseString, se supone que el script sin el sufijo 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. 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 script que se publica debe tener una versión superior a cualquier versión publicada anteriormente que se encuentre en la Galería de PowerShell. Un editor puede actualizar la versión 2.5.0-alpha con 2.5.0-beta o con 2.5.0 (sin sufijo de versión preliminar).
Búsqueda y adquisición de paquetes de versión preliminar mediante comandos de PowerShellGet
Para tratar con paquetes de versión preliminar mediante PowerShellGet Find-Script, Install-Script, Update-Script y Save-Script comandos 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 de script de PowerShellGet son Get-InstalledScript y, en algunos casos, con Uninstall-Script.
- Get-InstalledScript siempre mostrará automáticamente la información de la versión preliminar en la cadena de versión si está presente.
- Uninstall-Script desinstalará de forma predeterminada la versión más reciente de un script, si no se especifica ninguna versión . Ese comportamiento no ha cambiado. Sin embargo, si se especifica una versión preliminar mediante
-RequiredVersion,-AllowPrereleaseserá necesario.
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 quitará la versión actual de un script 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-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
Más detalles
PowerShell Gallery