Módulos que Exigem a Aceitação da Licença
SINOPSE
Os departamentos jurídicos de alguns editores de módulos exigem que os clientes aceitem explicitamente a licença antes de instalarem o módulo a partir de Galeria do PowerShell. Se um utilizador instalar, atualizar ou guardar um módulo com o PowerShellGet, seja diretamente ou como uma dependência de outro pacote, e esse módulo exigir que o utilizador concorde com uma licença, o utilizador tem de indicar que aceita a licença ou a operação falha.
Requisitos de Publicação para Módulos
Os módulos que gostariam de exigir que os utilizadores aceitem a licença devem cumprir os seguintes requisitos:
- A secção PSData do manifesto do módulo deve incluir RequireLicenseAcceptance = $True.
- O módulo deve conter license.txt ficheiro no diretório de raiz.
- O manifesto do módulo deve conter o Uri de Licença.
- O módulo deve ser publicado com a Versão 2.0 e superior do PowerShellGet Format.
Impacto na Instalação/Guardar/Atualizar-Módulo
- Os cmdlets Install/Save/Update suportam um novo parâmetro AcceptLicense que se comporta como se o utilizador visse a licença.
- Se RequiredLicenseAcceptance for True e AcceptLicense não for especificado, é apresentado o e pedido ao
license.txt
utilizador com:Do you accept these license terms (Yes/No/YesToAll/NoToAll)
.- Se a licença for aceite
- Save-Module: o módulo é copiado para o sistema do utilizador
- Install-Module: o módulo é copiado para o sistema do utilizador para a pasta adequada (com base no âmbito)
- Update-Module: o módulo é atualizado.
- Se a licença for recusada.
- A operação foi cancelada.
- Todos os cmdlets verificam os metadados (requireLicenseAcceptance e Format Version) que dizem que é necessária uma aceitação da licença
- Se a versão de formato do cliente for superior a 2.0, a operação falhará e pedirá ao utilizador para atualizar o cliente.
- Se o módulo tiver sido publicado com a versão de formato anterior a 2.0, o sinalizador requireLicenseAcceptance é ignorado.
- Se a licença for aceite
Dependências do Módulo
- Durante a operação Instalar/Guardar/Atualizar, se um módulo dependente (outra coisa depende do módulo) exigir a aceitação da licença, é necessário o comportamento de aceitação da licença (acima).
- Se a versão do módulo já estiver listada no catálogo local como estando instalada no sistema, ignoraríamos a verificação de licenças.
- Durante a operação Instalar/Guardar/Atualizar, se um módulo dependente precisar de uma licença e a aceitação da licença não ocorrer, a operação falha e segue os processos normais para o pacote que não conseguiu instalar/guardar/atualizar.
Impacto em -Force
Especificar –Force
não é suficiente para aceitar uma licença. –AcceptLicense
é necessário para a permissão de instalação. Se –Force
for especificado, RequiredLicenseAcceptance é Verdadeiro e –AcceptLicense
NÃO é especificado, a operação falha.
EXEMPLOS
Exemplo 1: Atualizar o Manifesto do Módulo para exigir a aceitação da licença
Update-ModuleManifest -Path C:\modulemanifest.psd1 -RequireLicenseAcceptance -PrivateData @{
PSData = @{
# Flag to indicate whether the module requires explicit user acceptance
RequireLicenseAcceptance = $true
} # End of PSData hashtable
} # End of PrivateData hashtable
Este comando atualiza o ficheiro de manifesto e define o sinalizador RequireLicenseAcceptance como verdadeiro.
Exemplo 2: Instalar o Módulo que requer a aceitação da licença
Install-Module -Name ModuleRequireLicenseAcceptance
License Acceptance
License 2.0
Copyright (c) 2016 PowerShell Team
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software.
Do you accept the license terms for module 'ModuleRequireLicenseAcceptance'.
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"):
Este comando mostra a licença do license.txt
ficheiro e pede ao utilizador para aceitar a licença.
Exemplo 3: Instalar o Módulo que requer a aceitação da licença com -AcceptLicense
Install-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense
O módulo é instalado sem qualquer pedido de aceitação de licença.
Exemplo 4: Instalar o Módulo que requer a aceitação da licença com -Force
Install-Module -Name ModuleRequireLicenseAcceptance -Force
PackageManagement\Install-Package : License Acceptance is required for module 'ModuleRequireLicenseAcceptance'. Please specify '-AcceptLicense' to perform this operation.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.1.3.3\PSModule.psm1:1837 char:21
+ ... $null = PackageManagement\Install-Package @PSBoundParameters
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (Microsoft.Power....InstallPackage:InstallPackage) [Install-Package], E
xception
+ FullyQualifiedErrorId : ForceAcceptLicense,Install-PackageUtility,Microsoft.PowerShell.PackageManagement.Cmdlets
.InstallPackage
Exemplo 5: Instalar o Módulo com dependências que requerem a aceitação da licença
Module ModuleWithDependency depende do módulo ModuleRequireLicenseAcceptance. É pedido ao utilizador que aceite a licença.
Install-Module -Name ModuleWithDependency
License Acceptance
MIT License 2.0
Copyright (c) 2016 PowerShell Team
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software.
Do you accept the license terms for module 'ModuleRequireLicenseAcceptance'.
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"):
Exemplo 6: Instalar o Módulo com dependências que requerem a aceitação da licença e -AcceptLicense
Module ModuleWithDependency depende do módulo ModuleRequireLicenseAcceptance. O utilizador não é solicitado a aceitar a licença, uma vez que AcceptLicense é especificado.
Install-Module -Name ModuleWithDependency -AcceptLicense
Exemplo 7: instalar o módulo que requer a aceitação da licença num cliente com mais de PSGetFormatVersion 2.0
Install-Module -Name ModuleRequireLicenseAcceptance
WARNING: The specified module 'ModuleRequireLicenseAcceptance' with PowerShellGetFormatVersion
'2.0' is not supported by the current version of PowerShellGet. Get the latest version of the
PowerShellGet module to install this module, 'ModuleRequireLicenseAcceptance'.
Exemplo 8: Guardar Módulo que requer a aceitação da licença
Save-Module -Name ModuleRequireLicenseAcceptance -Path C:\Saved
License Acceptance
License 2.0
Copyright (c) 2016 PowerShell Team
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software.
Do you accept the license terms for module 'ModuleRequireLicenseAcceptance'.
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"):
Este comando mostra a licença do license.txt
ficheiro e pede ao utilizador para aceitar a licença.
Exemplo 9: Guardar Módulo que requer a aceitação da licença com -AcceptLicense
Save-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense -Path C:\Saved
O módulo é guardado sem qualquer pedido de aceitação de licença.
Exemplo 10: Módulo de Atualização que requer a aceitação da licença
Update-Module -Name ModuleRequireLicenseAcceptance
License Acceptance
License 2.0
Copyright (c) 2016 PowerShell Team
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software.
Do you accept the license terms for module 'ModuleRequireLicenseAcceptance'.
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"):
Este comando mostra a licença do license.txt
ficheiro e pede ao utilizador para aceitar a licença.
Exemplo 11: Módulo de atualização que requer a aceitação da licença com -AcceptLicense
Update-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense
O módulo é atualizado sem qualquer pedido de aceitação de licença.
Mais detalhes
Exigir a Aceitação da Licença para os Scripts
Exigir suporte de Aceitação de Licenças no PowerShellGallery
Solicitar a Aceitação da Licença ao Implementar a Automatização do Azure
PowerShell Gallery