Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A partir da versão 1.6.0, o PowerShellGet e a Galeria do PowerShell fornecem suporte para marcar versões maiores que 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 quebrar a compatibilidade com versões anteriores do PowerShell 3 e superiores 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 de 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 que é incorporado 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:
- A ModuleVersion incluída 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 cadeia 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 teria a seguinte aparência:
@{
ModuleVersion = '2.5.0'
#---
PrivateData = @{
PSData = @{
Prerelease = 'alpha'
}
}
}
Os requisitos detalhados para a cadeia de pré-lançamento são:
- A cadeia de caracteres de pré-lançamento só pode ser especificada quando o ModuleVersion é 3 segmentos para Major.Minor.Build. Isso se alinha com o SemVer v1.0.0.
- Um hífen é o delimitador entre o número de compilação e a cadeia de caracteres de pré-lançamento. Um hífen pode ser incluído na cadeia de caracteres de pré-lançamento como o primeiro caractere, apenas.
- A cadeia 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.
- Apenas as cadeias de caracteres de pré-lançamento do SemVer v1.0.0 são suportadas no momento. A cadeia de caracteres de pré-lançamento não deve conter nenhum ponto ou + [.+], que são permitidos no SemVer 2.0.
- Exemplos de string de pré-lançamento suportados 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
A ordem de classificação é alterada 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. Assim, a versão 2.5.0-alpha é inferior a 2.5.0-beta, que é inferior a 2.5.0-gama. Se dois módulos tiverem a mesma 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á assumido como 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 publicado 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 exibidos.
As únicas exceções a isso nos comandos do módulo PowerShellGet são Get-InstalledModule e alguns casos com Uninstall-Module.
- Get-InstalledModule sempre mostrará automaticamente as informações de pré-lançamento na cadeia de caracteres de versão para 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.
Examples
Suponha que a Galeria do PowerShell tenha as versões do módulo TestPackage 1.8.0 e 1.9.0-alpha. Se -AllowPrerelease não for especificado, apenas 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, especifique sempre -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 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 depois de instalar a 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 fornecido. 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
- de módulo de salvamento
- Módulo de Atualização
- Get-InstalledModule
- Desinstalar-módulo
PowerShell Gallery