Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A partir da versão 1.6.0, o PowerShellGet e a Galeria do PowerShell fornecem suporte para marcar versões superiores a 1.0.0 como um pré-lançamento. Antes desse recurso, os pacotes de pré-lançamento eram limitados a ter uma versão começando com 0. O objetivo desses recursos é fornecer maior suporte para a convenção de controle de versão do SemVer v1.0.0 sem interromper a compatibilidade com versões anteriores do PowerShell 3 e superior ou versões existentes do PowerShellGet. Este tópico se concentra nos recursos específicos do módulo. Os recursos equivalentes para scripts estão no tópico Versões de pré-lançamento de scripts . Usando esses recursos, os editores podem identificar um módulo ou script como versão 2.5.0-alpha e, posteriormente, lançar uma versão 2.5.0 pronta para produção que substitui a versão de pré-lançamento.
Em um alto nível, os recursos do módulo de pré-lançamento incluem:
- Adicionar uma cadeia de caracteres de pré-lançamento à seção PSData do manifesto do módulo identifica o módulo como uma versão de pré-lançamento. Quando o módulo é publicado na Galeria do PowerShell, esses dados são extraídos do manifesto e usados para identificar pacotes de pré-lançamento.
- A aquisição de pacotes de pré-lançamento requer a adição de
-AllowPrereleasesinalizador aos comandosFind-ModulePowerShellGet ,Install-Module,Update-ModuleeSave-Module. Se o sinalizador não for especificado, os pacotes de pré-lançamento não serão mostrados. - As versões do módulo exibidas por
Find-Module,Get-InstalledModulee na Galeria do PowerShell serão exibidas como uma única cadeia de caracteres com a cadeia de caracteres de Pré-lançamento acrescentada, como em 2.5.0-alpha.
Os detalhes dos recursos estão incluídos abaixo.
Essas alterações não afetam o suporte à versão do módulo integrado ao PowerShell e são compatíveis com o PowerShell 3.0, 4.0 e 5.
Identificando uma versão do módulo como um pré-lançamento
O suporte do PowerShellGet para versões de pré-lançamento requer o uso de dois campos no Manifesto do Módulo:
- O ModuleVersion incluído no manifesto do módulo deve ser uma versão de 3 partes se uma versão de pré-lançamento for usada e deve estar em conformidade com o controle de versão existente do PowerShell. O formato da versão seria A.B.C, onde A, B e C são todos inteiros.
- A cadeia de caracteres de pré-lançamento é especificada no manifesto do módulo, na seção PSData de PrivateData.
Os requisitos detalhados sobre a string de Pré-lançamento estão abaixo.
Uma seção de exemplo de um manifesto de módulo que define um módulo como um pré-lançamento seria semelhante à seguinte:
@{
ModuleVersion = '2.5.0'
#---
PrivateData = @{
PSData = @{
Prerelease = 'alpha'
}
}
}
Os requisitos detalhados para a string de Pré-lançamento são:
- A cadeia de caracteres de pré-lançamento só pode ser especificada quando o ModuleVersion tiver 3 segmentos para Major.Minor.Build. Isso se alinha com o SemVer v1.0.0.
- Um hífen é o delimitador entre o número da compilação e a cadeia de caracteres de Pré-lançamento. Um hífen pode ser incluído na string de Pré-lançamento apenas como o primeiro caractere.
- A string de Pré-lançamento pode conter apenas alfanuméricos ASCII [0-9A-Za-z-]. É uma prática recomendada começar a string de Pré-lançamento com um caractere alfa, pois será mais fácil identificar que esta é uma versão de pré-lançamento ao verificar uma lista de pacotes.
- Somente strings de pré-lançamento do SemVer v1.0.0 são suportadas no momento. A string de pré-lançamento não deve conter ponto ou + [.+], que são permitidos no SemVer 2.0.
- Exemplos de cadeia de caracteres de pré-lançamento com suporte são: -alpha, -alpha1, -BETA, -update20171020
Impacto do controle de versão de pré-lançamento na ordem de classificação e nas pastas de instalação
Classifique as alterações da ordem ao usar uma versão de pré-lançamento, o que é importante ao publicar na Galeria do PowerShell e ao instalar módulos usando comandos PowerShellGet. Se a cadeia de caracteres de pré-lançamento for especificada para dois módulos, a ordem de classificação será baseada na parte da cadeia de caracteres após o hífen. Portanto, a versão 2.5.0-alpha é menor que 2.5.0-beta, que é menor que 2.5.0-gamma. Se dois módulos tiverem o mesmo ModuleVersion e apenas um tiver uma cadeia de caracteres de pré-lançamento, o módulo sem a cadeia de caracteres de pré-lançamento será considerado a versão pronta para produção e será classificado como uma versão maior do que a versão de pré-lançamento (que inclui a cadeia de caracteres de pré-lançamento). Por exemplo, ao comparar as versões 2.5.0 e 2.5.0-beta, a versão 2.5.0 será considerada a maior das duas.
Ao publicar na Galeria do PowerShell, por padrão, a versão do módulo que está sendo publicada deve ter uma versão maior do que qualquer versão publicada anteriormente que esteja na Galeria do PowerShell.
Localizando e adquirindo pacotes de pré-lançamento usando comandos PowerShellGet
Lidar com pacotes de pré-lançamento usando os comandos PowerShellGet Find-Module, Install-Module, Update-Module e Save-Module requer a adição do sinalizador -AllowPrerelease. Se -AllowPrerelease for especificado, os pacotes de pré-lançamento serão incluídos se estiverem presentes. Se -AllowPrerelease sinalizador não for especificado, os pacotes de pré-lançamento não serão mostrados.
As únicas exceções a isso nos comandos do módulo Get do PowerShell são Get-InstalledModule e alguns casos com Uninstall-Module.
- Get-InstalledModule sempre mostrará automaticamente as informações de pré-lançamento na string de versão dos módulos.
- Uninstall-Module desinstalará por padrão a versão mais recente de um módulo, se nenhuma versão for especificada. Esse comportamento não mudou. No entanto, se uma versão de pré-lançamento for especificada usando -RequiredVersion, -AllowPrerelease será necessária.
Exemplos
Suponha que a Galeria do PowerShell tenha as versões 1.8.0 e 1.9.0-alpha do módulo TestPackage. Se -AllowPrerelease não for especificado, somente a versão 1.8.0 será retornada.
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 um pré-lançamento, sempre especifique -AllowPrerelease. Especificar uma cadeia de caracteres de versão de pré-lançamento não é suficiente.
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
O comando anterior falhou porque -AllowPrerelease não foi especificado. Adicionar -AllowPrerelease resultará em sucesso.
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...
Não há suporte para a instalação lado a lado de versões de um módulo que diferem apenas devido ao pré-lançamento especificado. Ao instalar um módulo usando o PowerShellGet, diferentes versões do mesmo módulo são instaladas lado a lado criando um nome de pasta usando o ModuleVersion. O ModuleVersion, sem a cadeia de caracteres de pré-lançamento, é usado para o nome da pasta. Se um usuário instalar o MyModule versão 2.5.0-alpha, ele será instalado na MyModule\2.5.0 pasta. Se o usuário instalar o 2.5.0-beta, a versão 2.5.0-beta substituirá o conteúdo da pasta MyModule\2.5.0. Uma vantagem dessa abordagem é que não há necessidade de desinstalar a versão de pré-lançamento após a instalação da versão pronta para produção. O exemplo abaixo mostra o que 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 removerá a versão mais recente de um módulo quando -RequiredVersion não for fornecida. Se -RequiredVersion for especificado e for um pré-lançamento, -AllowPrerelease deverá ser adicionado ao 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...
Mais detalhes
- Versões de script de pré-lançamento
- find-module
- install-module
- save-module
- update-module
- get-installedModule
- UnInstall-Module
PowerShell Gallery