Compartilhar via


Módulos que exigem aceitação de licença

SINOPSE

Os departamentos jurídicos de alguns editores de módulos exigem que os clientes aceitem explicitamente a licença antes de instalar o módulo da Galeria do PowerShell. Se um usuário instalar, atualizar ou salvar um módulo usando o PowerShellGet, seja diretamente ou como uma dependência de outro pacote, e esse módulo exigir que o usuário concorde com uma licença, o usuário deverá indicar que aceita a licença ou a operação falhará.

Requisitos de publicação para módulos

Os módulos que desejam exigir que os usuários aceitem a licença devem atender aos seguintes requisitos:

  • A seção PSData do manifesto do módulo deve incluir RequireLicenseAcceptance = $True.
  • O módulo deve conter license.txt arquivo no diretório raiz.
  • O manifesto do módulo deve conter o URI da licença.
  • O módulo deve ser publicado com o formato PowerShellGet versão 2.0 e superior.

Impacto na instalação/salvamento/Update-Module

  • Os cmdlets Install/Save/Update dão suporte a um novo parâmetro AcceptLicense que se comporta como se o usuário tivesse visto a licença.
  • Se RequiredLicenseAcceptance for True e AcceptLicense não for especificado, o usuário verá o license.txt, e será solicitado com: Do you accept these license terms (Yes/No/YesToAll/NoToAll).
    • Se a licença for aceita
      • Save-Module: o módulo é copiado para o sistema do usuário
      • Install-Module: o módulo é copiado para o sistema do usuário para a pasta apropriada (com base no escopo)
      • Update-Module: o módulo é atualizado.
    • Se a licença for recusada.
      • A operação é cancelada.
      • Todos os cmdlets verificam os metadados (requireLicenseAcceptance e Format Version) que dizem que uma aceitação de licença é necessária
      • Se a versão de formato do cliente for anterior a 2.0, a operação falhará e solicitará que o usuário atualize o cliente.
      • Se o módulo foi publicado com a versão de formato anterior à 2.0, o sinalizador requireLicenseAcceptance será ignorado.

Dependências do módulo

  • Durante a operação Instalar/Salvar/Atualizar, se um módulo dependente (algo mais depende do módulo) exigir a aceitação da licença, o comportamento de aceitação da licença (acima) será necessário.
  • Se a versão do módulo já estiver listada no catálogo local como sendo instalada no sistema, ignoraremos a verificação de licença.
  • Durante a operação Instalar/Salvar/Atualizar, se um módulo dependente exigir uma licença e a aceitação da licença não ocorrer, a operação falhará e seguirá os processos normais para o pacote que falhou ao instalar/salvar/atualizar.

Impacto na -Force

Especificar –Force NÃO é suficiente para aceitar uma licença. –AcceptLicense é necessário para obter permissão para instalar. Se –Force for especificado, RequiredLicenseAcceptance for True e –AcceptLicense NÃO for especificado, a operação falhará.

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

Esse comando atualiza o arquivo de manifesto e define o sinalizador RequireLicenseAcceptance como true.

Exemplo 2: Módulo de instalação que requer aceitação de 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 arquivo e solicita que o usuário aceite a licença.

Exemplo 3: Módulo de instalação que requer aceitação de licença com -AcceptLicense

Install-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

O módulo é instalado sem qualquer solicitação para aceitar a licença.

Exemplo 4: Módulo de instalação que requer aceitação de 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 exigem aceitação de licença

O módulo ModuleWithDependency depende do módulo ModuleRequireLicenseAcceptance. O usuário é solicitado a aceitar 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 exigem aceitação de licença e -AcceptLicense

O módulo ModuleWithDependency depende do módulo ModuleRequireLicenseAcceptance. O usuário não é solicitado a aceitar a licença, pois AcceptLicense é especificado.

Install-Module -Name ModuleWithDependency -AcceptLicense

Exemplo 7: Instalar o módulo que requer aceitação de licença em um cliente anterior a 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: Salvar módulo que requer aceitação de 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 arquivo e solicita que o usuário aceite a licença.

Exemplo 9: Salvar módulo que requer aceitação de licença com -AcceptLicense

Save-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense -Path C:\Saved

O módulo é salvo sem qualquer solicitação para aceitar a licença.

Exemplo 10: Atualizar módulo que requer aceitação de 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 arquivo e solicita que o usuário aceite a licença.

Exemplo 11: Módulo de atualização que requer aceitação de licença com -AcceptLicense

Update-Module -Name ModuleRequireLicenseAcceptance -AcceptLicense

O módulo é atualizado sem qualquer solicitação para aceitar a licença.

Mais detalhes

Exigir aceitação de licença para scripts

Exigir suporte à Aceitação de Licença no PowerShellGallery

Exigir aceitação de licença ao implantar na Automação do Azure